我正在将我的主干版本从 0.9.2 更新到 1.0,但我遇到了一个问题。
模型未正确更新。它有延迟。以前我下面的代码完美地工作:
this.model({ attrib: true},{silent:true});
但更新后我删除了{silent:true}
,一切正常。模型正确更新。
我在 Backbonejs.org 上读过类似的内容
在更改上传递 {silent:true} 将不再延迟单个“change:attr”事件,而是完全静音。
我不完全明白该声明的含义。
我正在将我的主干版本从 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);
将在 Backbone 1.0 之前的版本中发出警报,但在 Backbone 1.0 中不会。