我的问题很可能需要一个非常简单的答案,然而,我无法轻易找到。
我正在处理的一个 Backbone 应用程序有几个视图。在定义不同的视图时,我在初始化函数中使用 _.bindAll 将“this”视图对象与视图的渲染函数连接起来。例如:
DiscussedItemView = Backbone.View.extend({
...
initialize: function() {
_.bindAll(this, "render");
},
render: function() {
this.$el.attr('id', 'li-meeting-task-' + this.model.getId());
this.$el.html(JST['tasks_sandbox/agenda_task_item']({
taskName : this.model.getName(),
taskId : this.model.getId()
}));
return this;
},
...
});
要创建 DiscusedItemView 的新实例,我执行以下操作:
...
var discussion_agenda_row = new DiscussedItemView({model: task});
discussion_agenda_row.render();
this.$( '#meeting-items-list' ).append(discussion_agenda_row.$el);
...
代码工作正常。尽管如此,我还是不明白为什么需要在讨论议程上显式使用 render() 函数。我以为初始化一个新的 DiscusedItemView 实例会自动调用渲染函数,但是如果我删除该discussion_agenda_row.render();
行,则不会显示 HTML。我错在哪里?
谢谢你,亚历山德拉