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