5

Ember 中有没有办法为特定模型配置自定义 REST url?

就像这个模型:

App.Post = DS.Model.extend({
    title: DS.attr('string'),
    comments: DS.hasMany('App.Comment')
});
App.Comment = DS.Model.extend({
    content: DS.attr('string'),
    post: DS.belongsTo('App.Post')
});

而这家商店:

app.Store = DS.Store.extend({
    revision : 11,
    adapter : DS.RESTAdapter.extend({
        namespace : 'rest'
    })
});

我希望通过它/rest/post/{id}/comments而不是/rest/comments默认行为来检索评论。
是否可以为一个特定的模型配置一个 rest-url?

4

2 回答 2

2

您可以注册一个额外的适配器并将其“作用域”到您的模型中。

App.Store.registerAdapter('App.Post', DS.RESTAdapter.extend({
  url: "/rest/post/"
}));
于 2013-05-09T03:14:53.750 回答
1

这实际上只是针对整个应用程序中的一个模型,还是您的 REST 后端使用的默认“hasMany”uri?我问是因为我的 api(django rest 框架)使用了这个确切的 uri,并且它需要对 ember-data 项目的完整拉取请求,因为要构建 URL,适配器需要相关的“父”或“所有者”(rails devs 从来没有需要所以它不存在)。

我会编写你自己的适配器(只是子类化基本适配器,所以你只覆盖不同的单个 hasMany)。我为我的适配器编写的方法如下,这是我完整的适配器供参考。

这是 ember-data 修订版 11 友好顺便说一句(尚未升级到 12)

https://github.com/toranb/ember-data-django-rest-adapter/blob/master/tests/adapter.js

    findMany: function(store, type, ids, parent) {
        var json = {}
        , root = this.rootForType(type)
        , plural = this.pluralize(root)
        , ids = this.serializeIds(ids)
        , url = this.buildFindManyUrlWithParent(store, type, ids, parent);

        this.ajax(url, "GET", {
            success: function(pre_json) {
                json[plural] = pre_json;
                Ember.run(this, function(){
                    this.didFindMany(store, type, json);
                });
            }
        });
    },
于 2013-03-06T14:17:35.800 回答