そのため、同じビューモデル内の 2 つの異なる場所で使用するスクローラー コントロールを作成しました。たとえば、次のようになります。
define(['common/viewmodels/controls/scroller-nav', 'common/viewmodels/controls/scroller-nav'],
function(mainScrollNav, modalScrollNav))
vm = {
activate: activate,
mainScrollControl: ko.observable(null),
modalScrollControl : ko.observable(null)
}
return vm;
function activate() {
vm.mainScrollControl({ model: mainScrollNav, view: 'common/views/controls/mainScroll' });
vm.modalScrollControl({ model: modalScrollNav, view: 'common/views/controls/modalScroll' });
// load up the data that is to be used for each (should be independent)
mainScrollNav.init();
modalScrollNav.init();
}
}
}
コントロールは mainScrollControl と modalScrollControl が設定されている両方のインスタンスで正常に読み込まれますが、コントロールが個別に定義されていても、データは共有されています (モーダルのスクローラー位置を変更し、メイン ページでも変更されます)。mainScrollNav と modalScrollNav は、独立したビューモデルではなく、単一のサービス ビューモデルにリンクしているようです。私はこれを正しい方法で行っていますか、それとも何か他のものを使用する必要がありますか?