3

我有一个带有 name 属性的模型,该属性具有在属性更改时要调用的绑定函数:

var Workitem = Backbone.Model.extend({
                                 initialize: function(){
                                 this.bind('change:name', function() {
                                           alert('name');
                                           }
                                           });
                                 },
                                 defaults: {
                                 name: 'Name'
                                 }
                                 });

如果我获取单个模型,这将起作用,并且当我设置属性和获取数据时会触发更改事件。

但后来我创建了一个集合,我希望在 fetch 方法期间为每个提取的模型触发事件到集合中:

var WorkitemList = Backbone.Collection.extend({
                                       model: Workitem,
                                       });

var workitemsList = new WorkitemList();
workitemsList.fetch();

这可能吗?

4

3 回答 3

1

导入完成后,Fetch 会触发集合上的“重置”事件。听着,然后开火/弄乱模型。

于 2012-10-01T20:50:49.153 回答
0

您可以覆盖集合的fetch-function 以分别在每个模型上调用 fetch 。但这是非常蛮力的。

fetch: function() {
  for (var model: this.models) {
    model.fetch();
  }
}

任何人都有更好的方法来实现这一点?

于 2012-06-14T15:11:22.000 回答
0

获取集合会用服务器响应替换集合中的模型。它不会更新集合中的每个模型,这是您想要的。最简单的解决方法是遍历集合以获取每个模型,然后您对服务器有多个请求并错过任何新添加的模型..

我认为对于您想要实现的目标,您需要创建并获取您的集合的另一个实例,然后将其中的模型与您的原始集合进行比较并根据需要进行更新.. 不是很漂亮..

于 2012-06-14T13:07:34.947 回答