当我通过收集方法添加或推送将新模型添加到集合时,是否有办法不触发添加事件 例如:
collection.add({name: 'any name'})
我试着给予
collection.add({name: 'xyz'}, {add: false})
但它不起作用
答案 0 :(得分:2)
@idbehold对此非常满意。您可以在选项中传递{silent: true}
以取消add
事件。我只是想从文档中添加一些信息。阅读它的内容
一般来说,当调用发出事件的函数(model.set,collection.add等等)时,如果您想阻止事件被触发,您可以通过{ silent:true}作为一种选择。
请注意,这很少,甚至从来都不是一个好主意。
在事件回调的选项中通过特定标记来查看并选择忽略,通常会更好。
因此,请考虑在选项中传递一个额外的标志,并在事件监听器中检查该标志,以忽略您不需要的内容。
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});