如何根据 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 });
我有一个看法:
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 });