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

标签 backbone.js handlebars.js marionette

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

我的代码如下所示:

型号:

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

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

    initialize: function(options) {
        _.bindAll(this);
        this.model.fetch();
    },
)};

模板:
<script id="my-template" type="text/x-handlebars-template">
    Date: <span id="my-data-field">{{data}}</span>
</script>

我检查了资源,它确实返回了正确的 JSON 和 data字段集。此外,模型正在传递到 View 中。

我怀疑这是由于 render检索数据后未调用函数;但是,我想获得有关如何完成的反馈。

有什么好的方法可以做到这一点?

谢谢!

编辑 :这个 CompositeView 确实有一个与之关联的 Collection(当我触发适当的事件时它呈现得很好)。我故意省略了那部分代码以避免混淆问题。

最佳答案

你是对的,因为 CompositeView延伸自 CollectionView ,默认情况下它只在集合事件上重新渲染。为了让它在你的模型上重新渲染,你可以在你的 CompositeView 中做这样的事情。 :

initialize: function(){
    this.listenTo(this.model, "change", this.render);
}

关于backbone.js - 如何在使用 Backbone 和 Marionette 的 Handlebars 模板中获取模型后更新数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20476586/

相关文章:

javascript - 在访问 Backbone 集合中的 json 解析器之前编辑/提取数据

javascript - 在 Backbone.js 中创建自定义 "sync"方法

requirejs - Backbone .marionette + i18n + Handlebars

javascript - 如何在 Meteor 中对带有输入单元格表的表单进行响应式(Reactive)绑定(bind)?

javascript - 聚焦到 DOM 元素不起作用

jquery-mobile - 尝试将 jqplot 与 jquery mobile、marionette 和 requirejs 一起使用

javascript - 我如何告诉 Backbone 该模型不是新的

javascript - 如何在 Jasmine.js 2.0.0 版本中使用 fixtures?

javascript - Handlebars : pass the index of each to a nested expresstion

javascript - 渲染 Marionette CollectionView 时如何删除每个 childView 之间的换行符?