backbone.js - {无声 :true} in Backbone 1. 0 版本

标签 backbone.js backbone-events backbone-model

我正在将主干版本从 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/

相关文章:

javascript - Backbone 集合模型在解析后消失

javascript - 如何在不实际点击的情况下手动触发主干点击事件

javascript - 我的 Backbone 模型的验证方法在 model.fetch 上调用,但不在 collection.fetch 上调用

javascript - 主干收集事件未触发。我错过了什么吗?

javascript - RequireJS 和 Backbone 入门

javascript - 让主干来提供静态 html 文件

JavaScript 返回不同的值

javascript - 使用 Backbone.js 显示 Div

javascript - 在更改事件处理程序中(重新)渲染 Backbone View 不起作用

javascript - 主干集合获取单个属性的列表