1

我有一个 API,它根据 URL 中存在的 ID 过滤一组对象,如下所示:

http://localhost:8000/api/v1/goal_update/?goal__id=12&format=json

我有一个对上述 URL 执行 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,并弄乱了其余的主干代码。

4

1 回答 1

4

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


GoalUpdateList = Backbone.Collection.extend({

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

});

new GoalUpdateList(null, model.get("goal_id"));
于 2012-04-05T05:05:23.367 回答