これに対する通常のアプローチはTableView
、複数RowView
の s を持つことです。TableView は に関連付けられ、必要なCollection
数の をインスタンス化してRowView
、この Collection を反復処理します。
また、TableView は Collection の変更をリッスンし、Collection が変更された場合は RowView インスタンスを作成および削除します。
RowView はModel
、コレクション内の各 の変更をリッスンします。また、各モデルに関連付けられたアクティブな DOM 要素に対するユーザーの操作をリッスンします。
これについては何の問題もありません。そして、最も直感的で保守しやすく、エレガントな構造だと思います。
TableView が一度にすべての行のイベントをリッスンする方が問題ではないと本当に思う場合は、これを試してください。
var TableView = Backbone.View.extend({
events: {
"click tr a.remove", "remove"
},
remove: function( event ){
console.log( "row-id", $(event.target).attr( "data-row-id" ) );
}
});
row
例のように、特別な属性によってTableViewでそれぞれを識別できることを確認しdata-row-id
てください..しかし、コレクションに移動し、具体的なモデルを検索して、直接持っているRowViewでこのイベントを直接消費するときに行動する必要がありますモデルへのアクセスとすべてがより自然に機能します。
実際には、パフォーマンスが向上するとは思いません。アンダーフードの jQuery が同じ数のイベント リスナーを作成すると思います。