0
所以我創建了我想同樣的視圖模型中在兩個不同的地方使用,例如滾動條控制: -迪朗達爾:定義同一個視圖模型(對照組)作爲兩個不同的變量
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鏈接到單個服務視圖模型,而不是獨立的視圖模型。我是否正在採取這種正確的方式,還是應該使用別的東西?
define函數沒有實例化你的對象,它只是下載必要的源文件,所以再次重複相同的路徑不會有任何影響。答案取決於您的scroller-nav中的代碼以及它返回的內容,但您可能需要調用該代碼,而不是直接將其設置爲模型。 「{model:mainScrollNav(),...」 –
完全忘了張貼解決方案,但是是現貨。 –