我有使用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 如何更改此网址?
答案 0 :(得分:9)
要处理前缀,您可以使用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