所以我有两个模板,一个是父模板,另一个是包含子视图的模板。我的第一个父视图扩展了主干的视图,其渲染方法看起来像
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(),它将被渲染。为什么这里有区别?感谢。
答案 0 :(得分:0)
尝试将this
添加为third parameter to each
。这设定了背景。如果您未指定上下文,this
将为window
。由于在父视图的render
期间您的html尚未出现在网页上,因此无法找到this.$('#div-in-parent-view')
以便向其添加html。