如何基于主干中的模型检索集合

时间:2013-06-06 14:00:45

标签: backbone.js collections model

我想检索一个带有POST请求的文件关键字集合,如下所示:

api.host.com/file/4/keywords

但是如何定义我的urlurlRoot关键字模型和关键字集合? 我已经阅读了docs,但我无法理解。

1 个答案:

答案 0 :(得分:3)

像往常一样,一般情况下,特别是在JS中,有很多方法可以做到这一点。我可以告诉你几种方法。

1)我将keywords集合定义为

Keywords = Backbone.Collection.extend( { ... } )

然后将其用作File模型的属性,我会在initialize()期间设置正确的值

File = Backbone.Model.extend({

    // the empty array [] is the initial set of models
    this.keywords = new Keywords([], { url: '/file/' + this.id + '/keywords' });

})

这样您就可以致电file.keywords.fetch()来获取内容。

2)我将keywords集合定义为

Keywords = Backbone.Collection.extend({

    initialize: function(models, options) {
        this.modelId = options.modelId
    },

    url: function() {
        return '/file/' + this.modelId + '/keywords'
    }

});

然后,在需要时,我会创建这样的实例:

File = Backbone.Model.extend({

    this.keywords = new Keywords([], { modelId: this.id });

})

为了给你一个完整的答案,你实际上可以删除initialize()函数(如果你不需要它)并写入url函数

url: function() {
    return '/file/' + this.options.modelId + '/keywords'
}