如何根据 backbone 和木偶中的对象更改更新视图?

how to update the view based on a object change in backbone and marionette?

我有一个看法:

define(['backbone', 'hbs!tmpl/test_tmpl'],
function (Backbone, TestTmpl) {
    'use strict';
    return Backbone.Marionette.ItemView.extend({
        initialize: function () {
            this.projects = {};
        },
        template: TestTmpl,
        templateHelpers: function () {
            return {
                projects: this.projects
            }
        },
        ui: {},
        events: {},
        onRender: function () {
            this.projects = {title: 'a'};
            return this;
        }
    });
});

然后在视图中:

{{#each projects}}{{this.title}}{{/each}}

onRender() 方法中我更新了项目 this.projects = {title: 'a'}; 并且在设置后,我希望视图数据也更新

有什么想法吗?

尝试调用

this.render(); 

通常,您会使用集合视图而不是项目视图。
如果您碰巧需要更多 HTML 围绕包装元素,请改用复合视图。

请注意,collectionview 在传递时采用 Backbone 集合:

var collectionview = new CollectionView({ collection: bbCollection }); 

项目视图采用模型:

var itemview = new ItemView({ model: bbModel}); 

对于您的示例,使用集合视图无需在模板中创建循环。
您可以通过调用

访问当前项目视图的属性
this.model.get("property"); 

在项目视图上。

在您的示例中,在我看来您宁愿使用数组而不是对象:

var projects = [{ title: "X"}, { title: "Y" }]; 

您可以通过以下方式即时创建 Backbone 集合:

var projects_collection = new Backbone.Collection(projects); 

并将其传递给集合视图:

//First create a Marionette Collectionview, then: 
var projectsCollview = new ProjectsCollview({ collection: projects_collection });