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

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

本文关键字:对象 新视图 更新 何根      更新时间:2023-09-26

我有一个观点:

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,请改用复合视图。

请注意,集合视图在传递时会采用主干集合:

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

项视图采用模型:

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

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

this.model.get("property"); 

在项目视图上。

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

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

您可以通过以下方式动态创建主干集合:

var projects_collection = new Backbone.Collection(projects); 

并将其传递给集合视图:

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