在使用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