如何将信息发送到新实例化的Backbone集合?

时间:2012-04-05 04:48:27

标签: javascript backbone.js

我有一个基于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,并混淆其余的骨干代码。

1 个答案:

答案 0 :(得分:4)

Backbone的集合期望模型数据作为第一个参数,正如您已经注意到的那样。但您可以像其他Backbone对象一样将第二个参数指定为对象文字。只需将nullundefined作为第一个参数传递,然后在您的集合initialize方法中,将options作为第二个参数。


GoalUpdateList = Backbone.Collection.extend({

  initialize: function(data, options){
    this.goal_id = options.goal_id;
  }

});

new GoalUpdateList(null, model.get("goal_id"));