所以我有两个模板,一个是父模板,另一个是包含子视图的模板。我的第一个父视图扩展了主干的视图,它的渲染方法看起来像
render: function () {
this.$el.append(templates["template-parent-test"](this.model));
return this;
}
这个父视图上有一个按钮。我现在用来填充视图的按钮。它基本上是这样做的:
populateView: function () {
// create some dummy test data to match the web service
_.each(myModel, function (theModel) {
var testView = new childView({ model: theModel });
this.$('div-in-parent-view').append(testView.render().$el);
});
}
这个主干视图扩展了 Backbone.View 并且它的渲染方法看起来像:
render: function () {
console.log("rendering child view");
this.$el.html(this.template({ data: this.model.toJSON() }));
return this;
}
所以这行得通。但我不想在按下按钮时填充父视图。我想在第一次显示它时填充它,并让按钮执行其实际应该执行的操作。我认为我可以从父视图中的渲染函数调用 this.populateView() ,但实际上没有渲染任何内容。但是,如果我在按钮事件中执行 this.populateView(),它就会被渲染。为什么这里有区别?谢谢。