私のルーターでは、次のようなビューが必要です。
require(['views/business-detail-view'],
function(BusinessDetailView) {
var businessDetailView = new BusinessDetailView({collection: businessOverviewCollection.models[id], id: id});
businessDetailView.render();
}
);
ビューでは、次のようなイベントをバインドしています。
events: {
'click #about-btn' : 'aboutHandler',
'click #contact-btn' : 'contactHandler',
'click #deals-btn' : 'dealsHandler',
'click #map-btn' : 'mapHandler'
},
ここでの問題は、ビューが最初にレンダリングされる場合、コールバックが呼び出されることです。しかし、別の場所でビューを再度レンダリングする必要がある場合は、コールバックが 2 回呼び出されます。
どうすればこれを防ぐことができますか、それとも何か間違っていますか?
アップデート:
それまでの間、ルーターのコードを次のように変更しました。
if ( !businessDetailView ) {
require(['views/business-detail-view'],
function(BusinessDetailView) {
businessDetailView = new BusinessDetailView({collection: businessOverviewCollection.models[id]});
businessDetailView.render();
}
);
}
else {
businessDetailView.collection = businessOverviewCollection.models[id];
businessDetailView.render();
}
問題を解決しているように見えますが、これが有効なパターンであるかどうかを知っているバックボーンにはまだ慣れていません。