10

我遇到了 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我怎样才能改变这个网址?

4

3 回答 3

9

这是 Ember Data Beta 3 的版本

要处理前缀,您可以使用namespace. DS.RESTAdapter要处理后缀,您需要自定义 的buildURL方法DS.RESTAdapter_super()用于获取原始功能并对其进行修改。它应该看起来像这样:

App.ApplicationAdapter = DS.RESTAdapter.extend({
    namespace: '~me/test',
    buildURL: function() {
        var normalURL = this._super.apply(this, arguments);
        return normalURL + '.php';
    }
});
于 2013-10-29T21:07:00.130 回答
6

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

App.Adapter = DS.RESTAdapter.extend({
  namespace: '~/me/test'
});
于 2013-01-18T22:31:12.127 回答
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

于 2013-03-22T09:06:32.020 回答