0

在更改与 中的单个属性相对应的输入文本字段后ItemView,我会更新CompositeView.

更新在模型中运行良好,但只有与最后编辑的输入文本字段对应的 ItemView 才会在 DOM 中显示新属性,因为它是唯一调用CompositeViewonRender方法的元素:

   onRender: function() {
        this.$el.html(this.template(this.model.toJSON()));
        return this;
    }

我想onRender()ItemViews. CompositeView我怎样才能做到这一点?

4

2 回答 2

1

在阅读了这个问题中出现的内容并查看了文档之后。我想我会尝试changeItemView.

myItemView = Backbone.Marionette.ItemView.extend({

    initialize: function() {
        /*bind change event, will get onRender fired when the probability gets updated
        this.model.bind('change', this.onRender);
        error: 'cannot call' Cannot call method 'toJSON' of undefined
        TODO: figure out WHY this is an error but this.render is OK*/

        this.model.bind('change', this.render);
    }

神秘地,onRender()失败了,但render()完成了工作。现在我想弄清楚为什么。

于 2013-09-13T17:24:38.327 回答
1

不是最优雅的解决方案,但这里有

var childViews = compositeView.children._views;
_.each(childViews, function(childView){
    childView.render();
});
于 2013-09-13T03:11:03.627 回答