如何使用Backbone和Marionette在Handlebars模板中获取模型后更新数据?

Jua*_*oto 5 backbone.js handlebars.js marionette

在获取分配给Marionette CompositeView的模型后,尝试在Handlebars模板中更新数据字段,但页面中的HTML未更新.

我的代码看起来像这样:

模型:

B.Page.Model = Backbone.Model.extend({
    url: function () {
        return 'my/resource/';
    },
});
Run Code Online (Sandbox Code Playgroud)


视图:

B.Page.CompositeView = Backbone.Marionette.CompositeView.extend({
    template: Handlebars.compile(templates.find('#my-template').html()),

    initialize: function(options) {
        _.bindAll(this);
        this.model.fetch();
    },
)};
Run Code Online (Sandbox Code Playgroud)


模板:

<script id="my-template" type="text/x-handlebars-template">
    Date: <span id="my-data-field">{{data}}</span>
</script>
Run Code Online (Sandbox Code Playgroud)

我检查了资源,它确实返回了具有data字段集的正确JSON .此外,模型将传递到视图中.

我怀疑这是因为在render检索数据后没有调用函数; 但是,我希望得到关于应该如何完成的反馈.

有什么好办法呢?

谢谢!

编辑:这个CompositeView确实有一个与之关联的Collection(当我触发相应的事件时渲染就好了).我故意遗漏了部分代码,以避免混淆问题.

zer*_*sor 3

您是对的,因为 aCompositeView扩展自CollectionView,默认情况下它仅在集合事件上重新呈现。要使其根据模型的更改重新渲染,您可以在您的 中执行以下操作CompositeView

initialize: function(){
    this.listenTo(this.model, "change", this.render);
}
Run Code Online (Sandbox Code Playgroud)