我一直在查看一些代码一段时间,无法决定在这种情况下应用的最佳实践:
假设我们有一个包含 n 个子视图的视图。我遇到了两种初始化它们的做法
1 内部初始化
initialize: function() {
this.subViews = [];
this.subViewModelCollection.each(function(model) {
var view = new SubView({model: model});
this.subViews.push(view);
this.$el.append(view.el);
}, this);
},
render: function() {
_.invoke(this.subViews, 'render');
}
2 内部渲染
initialize: function() {
... // render handles the subviews
},
render: function() {
this.subViews = [];
this.subViewModelCollection.each(function(model) {
var view = new SubView({model: model}).render(); // render optional
this.subViews.push(view);
this.$el.append(view.el);
}, this);
}
现在这些只是粗略的样本,但它们证明了我的困境。initialize
或-function是否应该render
负责初始化子视图?就我个人而言,我一直是后一个版本的坚定拥护者,但我看到的一些代码让我更倾向于前者。
那么,你在哪里初始化你的子视图,你为什么在那里这样做,为什么它比其他选项更好?