在使用Kendo MVVM框架的Kendo應用程序中:我有一個「全局」viewModel,它是應用程序所有部分共有的信息 - 例如, UserState,它有一個屬性isLoggedIn。如何在多個視圖模型中使用kendo observable屬性
許多不同的視圖和ViewModels訪問userState對象(從我所看到的,1視圖綁定到Kendo中的1 ViewModel)。
例如,如果我的主頁未經過身份驗證,我的主頁可能會顯示登錄按鈕。然後,所有其他屏幕在登錄後的表現會有所不同,因此每個ViewModel都需要引用UserState對象。但是,如果它們中的任何一個改變了它,那麼所有其他視圖都應該更新,因爲我使用了Kendo Observable對象。這似乎並不奏效。
我設置了一個簡單的例子在這裏示出了該問題: http://jsfiddle.net/rodneyjoyce/uz7ph/4/
var app = new kendo.mobile.Application();
var userStateviewModel = kendo.observable({
isLoggedIn: false,
});
var viewModel1 = kendo.observable({
label: 'From ViewModel1',
isLoggedInVM1: userStateviewModel.isLoggedIn
});
userStateviewModel.set('isLoggedIn', true);
//viewModel1.set('isLoggedInVM1', userStateviewModel.isLoggedIn);
alert(viewModel1.isLoggedInVM1);
kendo.bind($("#testForm"), viewModel1);
userStateViewModel被許多不同的視圖,所以在ViewModel1我露出iSloggedIn屬性和綁定到它在視圖(開始關閉爲假)。
然後,代碼在userStateViewModel中將其設置爲true - 所以我需要將它的所有觀察實例更改爲true - 但這不起作用。如果我註釋掉這行代碼 //viewModel1.set('isLoggedInVM1',userStateviewModel.isLoggedIn);
那麼它會工作,但是這違背了觀察到的點,因爲我不知道是哪10周的ViewModels將更新它,什麼時候,但所有的觀點需要更新新的價值...
很好,謝謝 - 我不知道,你可以參考它是一個功能 - 這一切運作良好 – Rodney
好吧,我發現了一個問題使用這種方法 - 請參閱此JSFiddle:當我調用userState.loginUser()更改userStateViewModel中isLoggedIn的值時,它不會更新。運行並單擊該按鈕以查看問題 - 綁定不會反映更新的值(但警報框對象)。任何幫助表示感謝,謝謝。 http://jsfiddle.net/rodneyjoyce/uz7ph/11/ – Rodney
注意:我認爲我的新問題已經在上面的評論中丟失了,所以我在這裏問它:http://stackoverflow.com/questions/22161922/using-a -kendo觀察的屬性,在-多的ViewModels – Rodney