メインビューでrowClickイベントを捕捉するのではなく、行ビューで捕捉してバックボーンイベントシステムに渡すことをお勧めします。 親ビューはクリックを捕捉するためにその行にバインドできます。
そこにこれを行うには、2つの方法、
トリガあなたの行のモデルのカスタムイベントがあり、それはハックとパフォーマンスヒットのように思えるものの、コレクション内のすべてのモデルに、親バインドをしましょう。
私はイベントアグリゲータでそれをやってお勧め:
var App = {
events: _.extend({}, Backbone.Events);
};
var myGeneralView = Backbone.Views.extend({
initialize: function() {
_.bindAll(this, "catchMyCustomEvent";
/*
and here you bind to that event on the event aggregator and
tell it to execute your custom made function when it is triggered.
You can name it any way you want, you can namespace
custom events with a prefix and a ':'.
*/
App.events.bind('rowView:rowClicked');
},
catchMyCustomEvent: function (model, e) {
alert("this is the model that was clicked: " + model.get("myproperty"));
}
// other methods you will probably have here...
});
var myRowView = Backbone.Views.extend({
tagName: "li",
className: "document-row",
events: {
"click" : "myRowClicked"
},
initialize: function() {
_.bindAll(this, "myRowClicked");
},
myRowClicked: function (e) {
/*
You pass your model and your event to the event aggregator
*/
App.events.trigger('rowView:rowClicked', this.model, e);
}
});
あなたは 'e.data.model'を試みたことがありますか? –