在将模型添加到集合时不要触发添加事件

时间:2014-05-17 14:25:28

标签: backbone.js

当我通过收集方法添加或推送将新模型添加到集合时,是否有办法不触发添加事件 例如:

collection.add({name: 'any name'})

我试着给予

collection.add({name: 'xyz'}, {add: false})

但它不起作用

2 个答案:

答案 0 :(得分:2)

@idbehold对此非常满意。您可以在选项中传递{silent: true}以取消add事件。我只是想从文档中添加一些信息。阅读它的内容

  

一般来说,当调用发出事件的函数(model.set,collection.add等等)时,如果您想阻止事件被触发,您可以通过{ silent:true}作为一种选择。

     

请注意,这很少,甚至从来都不是一个好主意。

     

在事件回调的选项中通过特定标记来查看并选择忽略,通常会更好。

因此,请考虑在选项中传递一个额外的标志,并在事件监听器中检查该标志,以忽略您不需要的内容。

选中此Jsbin Example

var M = Backbone.Model.extend({ defaults: { a: 5 } });
var C = Backbone.Collection.extend({ model: M });

var c = new C();
var m = new M({a:1});

c.on('add', function(model, collection, options) { 
  console.log(options); 
  if (!options.flag) { return; }
});

c.add(m, {flag: false});

答案 1 :(得分:1)

试试这个:

collection.add({name: 'xyz'}, {silent: true});