Backbone中的模型更改呈现

时间:2013-06-26 18:23:31

标签: javascript events backbone.js view model

我遇到的大多数Backbone教程和示例都为您的模型提供了类似的建议:

this.model.on('change', this.render, this);

在我的特定情况下,我正在为我的模型创建一个form的视图,并且这些字段与模型属性相关联。当用户更新form上的字段时,还应更新模型。这不是一个问题,因为我有事件绑定到激活相应代码以更新我的模型的字段。

然而,我遇到的问题是我还希望视图在模型发生时更新(如上面提到的无处不在的更改事件绑定)。这会导致视图在更新字段时重新呈现自身,因为基础模型正在发生变化。所以现在每当我更改form上的值时,我的视图都会重新绘制。这既低效又导致许多令人沮丧的错误(如焦点丢失)。

这个问题通常如何处理?

2 个答案:

答案 0 :(得分:3)

http://backbonejs.org/#Events-catalog

如果您不希望模型更改触发视图的渲染,请使用{silent: true}。截至Backbone的最后一个版本,这将彻底消除变化(之前只是关闭直到下一次非静默变化)。因此,当您对模型的更改来自某些用户输入时,请使用silent标记。

答案 1 :(得分:1)

如果您想在不触发更改事件事件的情况下更新模型,可以通过调用

来执行此操作
this.model.set('val', newval, {silent:true});