我正在使用此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){ ... });
但事实并非如此。我做错了什么
答案 0 :(得分:0)
如果您尝试使用listen to
将事件委托给视图,那该怎么办?指出:
- 您可以将上下文作为参数4传递,这样您就不需要绑定回调函数,这会因为不必要的函数调用而使代码变慢。
例如
var view = Backbone.View.extend({
initialize: function(params) {
this.listenTo(this.model, "change", this.rerender, this);
}
希望此解决方案能为您提供帮助。
干杯