我为我的客户端 Javascript 使用了 MVC 的实现。
我有一个Table
包含模型数组的Row
模型。每个模型都有对应的视图TableView
和RowView
.
var Table = function() {
this.rows = [];
}
将 Table 渲染到 DOM 的责任在于TableView
类型。这接受一个Table
模型作为构造函数参数。
为了呈现自己,它遍历“实例变量”Row
中的 s,为每个新的 a,传入当前行模型并在视图上调用 render,如下所示:rows
RowView
var TableView = function(tableModel) {
this.$el = $("#myTable");
this.model = tableModel;
this.render = function() {
_.each(this.model.rows, function(row) { this.$el.append(new RowView(row).render()); });
}
}
这行得通,但感觉不对,因为关于RowView
被渲染的确切类型的知识存在于表视图中。如果我想要另一种类型的RowView
- 说RowView2
渲染略有不同,那么我需要在TableView
渲染函数中显式条件。
我如何更改此实现以启用表行的多态呈现 - 或者我的实现完全错误并且有更好的方法?