EmberJS:更改加载模型的URL(ember-data)

时间:2013-01-18 20:28:50

标签: url ember.js http-status-code-404 ember-data

我有使用ember-data的问题。例如,我在 http:// localhost / ~me / test

创建了一个项目

在我的项目中,我创建了一个商店和模型如下:

... init stuff here ...

var attr = DS.attr;
App.Person = DS.Model.extend({
    firstName: attr('string'),
    lastName: attr('string'),
});

App.Store = DS.Store.extend({
    revision: 11,
    adapter: DS.RESTAdapter,
});

现在我搜索(在我的路线的某个地方)这样的人

var person = App.Person.find(params);

调用 http:// localhost / persons?post_id = 10 。这个当然不存在。我会期待像 http:// localhost / ~me / test / persons?post_id = 10 之类的东西。更好的是 http://localhost/~me/test/persons.php?post_id = 10 如何更改此网址?

3 个答案:

答案 0 :(得分:9)

这是Ember Data Beta 3

要处理前缀,您可以使用namespace的{​​{1}}属性。要处理后缀,您需要使用DS.RESTAdapter自定义buildURL DS.RESTAdapter方法,以获取原始功能并进行修改。看起来应该是这样的:

_super()

答案 1 :(得分:6)

MilkyWayJoe是对的,在你的适配器中你可以定义命名空间。

App.Adapter = DS.RESTAdapter.extend({
  namespace: '~/me/test'
});

答案 2 :(得分:4)

这也可行:

App.Person = DS.Model.extend({
    url: '~me/test/persons',
    firstName: attr('string'),
    lastName: attr('string'),
});

或者如果你想使用命名空间和.php路径:

App.Adapter = DS.RESTAdapter.extend({
  namespace: '~/me/test',
    plurals: {
        "persons.php": "persons.php",
    }
});

App.Person = DS.Model.extend({
    url: 'persons.php',
    firstName: attr('string'),
    lastName: attr('string'),
});

复数位是为了确保Ember Data不添加“s”,例如person.phps

相关问题