我正在将主干版本从 0.9.2 更新到 1.0,但遇到了问题。
模型未正确更新。它有延迟。以前我下面的代码工作得很好:
this.model({ attrib: true},{silent:true});
但更新后我删除了
{silent:true}
一切正常。模型正确更新。我在 Backbonejs.org 上读过类似的内容
在更改时传递 {silent:true} 将不再延迟单个“change:attr”事件,而是完全静音。
我不完全明白这句话的意思。
最佳答案
关于您引用的文档的含义:
当你在做的时候(我猜 this.model
是一个错误)this.set({attr: value}, {silent: true})
,所有更改事件都只是 延迟 直到下一次无声的变化。也就是说,如果你在做 this.trigger('change')
(从 jQuery/Backbone 的最新版本开始,this.change()
不再起作用)或 this.set('anotherAttr', anotherValue)
, change:attr
事件将被触发。
从 Backbone 1.0 开始,这种行为已经改变。当您使用静音标志时,您是 不耽误 change:attr
事件结束了,你是 正在关闭 它完全关闭。
所以基本上,用一段代码来说明:
myModel.listenTo(myModel, 'change:attr', function() {alert();});
myModel.set('attr', true, {silent: true});
myModel.trigger('change');
// or myModel.set('anotherAttr', true);
将在 1.0 之前的 Backbone 中发出警报,但不会在 Backbone 1.0 中发出警报。
关于backbone.js - {无声 :true} in Backbone 1. 0 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16056145/