私は Backbone JS を初めて使用し、概念を理解するのに苦労しています。
画面に一度に 1 つのパネルが表示される、パネルとのインターフェイスがあります。各パネルは、独自のモデルがアタッチされた独自のビューによって制御されます。現在、各パネルは、クリックして次のパネルを表示できる「アクティベーター」タブとして表示されます。
私の考えでは、これらのタブは実際には親パネル ビューのサブビューです。パネルがなければ、タブは存在しません。ただし、ユーザーがパネル (ビュー) を切り替えることができるように、すべてのタブを一度に画面に表示する必要があります。したがって、基本的にすべてのパネル (テンプレートはともかく) がロードされますが、タブのクリックによってトリガーされるまで非表示になり、その時点でそのコンテンツが入力されるか、更新されます。
私の問題は、アーキテクチャ上、イベントをタブビューにバインドすることにあります。たとえば、次のようになります。
window.PanelTabView=Backbone.View.extend({
className: 'view panel-tab-view',
el: '#appPanelTabs',
tagName: 'li',
events: {
'click a': 'test'
},
initialize: function() {
},
render: function(panel) {
this.$el.append(this.template(panel.toJSON()));
},
test: function(x) {
console.log(this.cid);
}
});
そのため、タブがクリックされると、すべてのタブ ビューに対してすべてのクリック イベントが発生します。
では、すべてのタブを 1 つのビューとして扱うべきでしょうか? しかし、テンプレートのモジュール性の観点から、各タブが独自のビューを持つというアイデアが気に入っています。
あるいは、Backbone とその MVC 風のアプローチについて、何か大きなものを見逃しているのかもしれません。
このシナリオで何をしますか?