我有一个基于URL中存在的ID来过滤一组对象的API,如下所示:
http://localhost:8000/api/v1/goal_update/?goal__id=12&format=json
我有一个集合,可以对上述网址发出GET请求。以下是该集合的代码:
var GoalUpdateList = Backbone.Collection.extend({
// Reference the Goal Update model
model: GoalUpdate,
// Do HTTP requests on this endpoint
url: function() {
return "http://localhost:8000/api/v1/goal_update/?goal__id=" + this.goal_id + "&format=json";
},
// Set the goal ID that the goal update list corresponds to
initialize: function(goal_id) {
this.goal_id = goal_id;
},
});
我想在创建集合的新实例时传入ID,因此我创建了一个包含以下代码的视图:
this.collection = new GoalUpdateList(this.model.get("id"));
但是我认为我正在传递模型参数。我试图传递信息,告诉集合使用什么URL。因此,它通过验证功能运行ID,并混淆其余的骨干代码。
答案 0 :(得分:4)
Backbone的集合期望模型数据作为第一个参数,正如您已经注意到的那样。但您可以像其他Backbone对象一样将第二个参数指定为对象文字。只需将null
或undefined
作为第一个参数传递,然后在您的集合initialize
方法中,将options
作为第二个参数。
GoalUpdateList = Backbone.Collection.extend({
initialize: function(data, options){
this.goal_id = options.goal_id;
}
});
new GoalUpdateList(null, model.get("goal_id"));