クライアント側の Javascript に MVC の実装を使用しています。
Table
モデルの配列を含むモデルがありますRow
。各モデルには、対応するビューTableView
とがありRowView
ます。
var Table = function() {
this.rows = [];
}
Table を DOM にレンダリングする責任は、TableView
型にあります。Table
これは、モデルをコンストラクター引数として受け入れます。
それ自体をレンダリングするには、 「インスタンス変数」Row
の s を反復処理し、 for each を新しく作成し、現在の行モデルを渡し、次のようにビューで 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
レンダリング関数で明示的な条件が必要になります。
テーブル行のポリモーフィック レンダリングを有効にするためにこの実装を変更するにはどうすればよいでしょうか。