【发布时间】:2014-06-03 13:03:02
【问题描述】:
我正在使用这个Backbone nested plugin。 我这样写我的绑定:
var view = Backbone.View.extend({
initialize: function(params) {
this.model.bind('change', _.bind(this.rerender, this));
}
我传递给视图的模型是这样声明的,在全局范围内的视图之外:
newModel = new Backbone.NestedModel(jsonData);
当我编写 newModel.set("prop", "value") 时,它会触发更改并触发重新渲染
但是当我写 newModel.set("prop.prop", "value") 时,它不会触发“更改”如果 prop.prop 已经存在。这意味着未检测到值更改。
但检测到新值:newModel.set("newProp.newProp", "value") 触发更改
嵌套可以正常工作。
我可以newModel.get("prop.prop") 它返回值
现在,如果我听特定属性,它确实有效:
this.model.bind('change:prop.prop', _.bind(this.rerender, this));
} //fires rerender
根据插件文档,在任何情况下听“更改”都应该触发更改:
// 这将在设置或更改 'name.middle.initial' 时触发
user.bind('change', function(model, newVal){ ... });
但事实并非如此。我做错了什么
【问题讨论】:
标签: javascript json backbone.js nested backbone-views