我遇到的大多数Backbone教程和示例都为您的模型提供了类似的建议:
this.model.on('change', this.render, this);
在我的特定情况下,我正在为我的模型创建一个form
的视图,并且这些字段与模型属性相关联。当用户更新form
上的字段时,还应更新模型。这不是一个问题,因为我有事件绑定到激活相应代码以更新我的模型的字段。
然而,我遇到的问题是我还希望视图在模型发生时更新(如上面提到的无处不在的更改事件绑定)。这会导致视图在更新字段时重新呈现自身,因为基础模型正在发生变化。所以现在每当我更改form
上的值时,我的视图都会重新绘制。这既低效又导致许多令人沮丧的错误(如焦点丢失)。
这个问题通常如何处理?
答案 0 :(得分:3)
http://backbonejs.org/#Events-catalog
如果您不希望模型更改触发视图的渲染,请使用{silent: true}
。截至Backbone的最后一个版本,这将彻底消除变化(之前只是关闭直到下一次非静默变化)。因此,当您对模型的更改来自某些用户输入时,请使用silent
标记。
答案 1 :(得分:1)
如果您想在不触发更改事件事件的情况下更新模型,可以通过调用
来执行此操作this.model.set('val', newval, {silent:true});