Backbone - NestedModels - 嵌套集不会触发“更改”

时间:2014-06-03 13:03:02

标签: javascript json backbone.js nested backbone-views

我正在使用此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){ ... });

但事实并非如此。我做错了什么

1 个答案:

答案 0 :(得分:0)

如果您尝试使用listen to

将事件委托给视图,那该怎么办?

指出:
    - 您可以将上下文作为参数4传递,这样您就不需要绑定回调函数,这会因为不必要的函数调用而使代码变慢。

例如

var view = Backbone.View.extend({
    initialize: function(params) {
        this.listenTo(this.model, "change", this.rerender, this);
     }

希望此解决方案能为您提供帮助。

干杯