backbone.js – Marionette ItemView如何在更改模型时重新渲染

我正在使用Handlebars模板引擎。
所以,我有型号:

Backbone.Model.extend({
        urlRoot: Config.urls.getClient,
        defaults: {
            contract:"",
            contractDate:"",
            companyTitle:"",
            contacts:[],
            tariff: new Tariff(),
            tariffs: [],
            remain:0,
            licenses:0,
            edo:""
        },
        initialize:function(){
            this.fetch();
        }
    });

然后Marionette ItemView:

Marionette.ItemView.extend({
        template : templates.client,
        initialize: function () {
            this.model.on('change', this.render, this);
        },
        onRender: function () {
            console.log(this.model.toJSON());
         }      
    });

然后我称之为:

new View({
    model : new Model({id:id})
        })

并且,它立即为我呈现一个视图,这很酷。
但是,在模型获取数据之后,它会触发“更改”,所以我在控制台序列化模型中看到两次,我首先看到空模型,然后填写一个。

但是,视图没有更新。

我该如何解决?

美国我明白,我可以在抓取完成回调时调用render方法。但是,当用户改变模型时,我还需要进一步的操作。

在视图中,您可以使用以下代码

    modelEvents: {
        'change': 'render';
    }

代替

   initialize: function () {
        this.model.on('change', this.render, this);
    },
    onRender: function () {
        console.log(this.model.toJSON());
     }
翻译自:https://stackoverflow.com/questions/16876970/marionette-itemview-how-to-re-render-model-on-change

转载注明原文:backbone.js – Marionette ItemView如何在更改模型时重新渲染