1

クライアント側の 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これは機能しますが、レンダリングされる正確なタイプの知識がテーブル ビューに存在するため、間違っているように感じます。別のタイプのレンダリングが必要な場合RowViewRowView2TableViewレンダリング関数で明示的な条件が必要になります。

テーブル行のポリモーフィック レンダリングを有効にするためにこの実装を変更するにはどうすればよいでしょうか。

4

2 に答える 2

1

MVCライブラリを調べたかどうかはわかりませんが、Peter Michauxからの素晴らしいライブラリがあります:https ://github.com/petermichaux/maria

于 2012-07-20T11:24:08.290 に答える
1

RowViewインスタンスの外部でTableViewインスタンスを構築し、現在送信しているのではなくリストでコンストラクターに渡すことができTableModelます。そうすれば、要素を DOM に追加することがすべてTableView気にかけられ、の「タイプ」に関係なく追加できますRow

于 2012-07-20T10:20:07.977 に答える