0

そのため、同じビューモデル内の 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 は、独立したビューモデルではなく、単一のサービス ビューモデルにリンクしているようです。私はこれを正しい方法で行っていますか、それとも何か他のものを使用する必要がありますか?

4

1 に答える 1