EmberJS:变更网址加载模型(烬数据)(EmberJS: change url for load

2019-08-07 09:22发布

我有烬数据的问题。 例如,我在http创建了一个项目://本地主机/〜我/测试

在项目中,我已经创建了一个商店,一个模型,如下所示:

... 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://本地主机/人POST_ID = 10什么名字?。 这其中不存在,当然。 我会一直期待类似于http://本地主机/〜我/测试/人POST_ID = 10? 更妙的是http://localhost/~me/test/persons.php POST_ID = 10我怎样才能改变这个网址?

Answer 1:

这是因为灰烬数据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';
    }
});


Answer 2:

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

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


Answer 3:

这将工作太:

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'),
});

该复数位是确保数据恩贝尔不添加一个“s”,如person.phps



文章来源: EmberJS: change url for loading model (ember-data)