Javascript 将不同ViewModel的属性相互绑定
是否有一种方法可以使用kendo mvvm将不同ViewModel的两个属性相互绑定,或者我必须自己编写更改事件的代码Javascript 将不同ViewModel的属性相互绑定,javascript,html,kendo-ui,single-page-application,kendo-mvvm,Javascript,Html,Kendo Ui,Single Page Application,Kendo Mvvm,是否有一种方法可以使用kendo mvvm将不同ViewModel的两个属性相互绑定,或者我必须自己编写更改事件的代码 UserViewModel = { init: function(e) { }, show: function(e) { }, model: { isLoggedIn: kendo.observable(false) } } OtherContextViewModel = { init: function(
UserViewModel = {
init: function(e) {
},
show: function(e) {
},
model: {
isLoggedIn: kendo.observable(false)
}
}
OtherContextViewModel = {
init: function(e) {
},
show: function(e) {
},
model: {
UserIsLoggedIn: //bind to isLoggedIn of the UserViewModel
}
}
我尝试这样做的原因是:我想根据用户是否登录,在
OtherContext
中隐藏和显示一些内容。在讨论用户组和特权时,可能会更进一步。如果这不是正确的方法和/或可能是错误的做法,有人能给我举个例子或其他方法吗?您好,我认为中介模式可能就是您想要的,它非常适合在视图模型之间发送消息,而无需直接引用它们。CodeProject有一个教程,展示了如何实现中介模式
假设我们有两个视图模型:
1.LoginView模型
2.主视图模型
我们将MainViewModel注册到中介消息UserLoggedIn
Mediator.Instance.Register(
(Object o) =>
{
UpdateView(o as loggedInBoolean);
}, Mediator.ViewModelMessages.UserLoggedIn);
当用户通过LoginViewModel登录时,我们向中介器发送一条消息UserLoggedIn
public void LoggingIn()
{
Mediator.Instance.Notify(Mediator.ViewModelMessages.UserLoggedIn, null);
}
发送此消息将触发UpdateView(loggedInBoolean)方法,然后您可以使用该方法更改MainViewModel中的任何属性等
摘要:中介器在viewModels之间传递消息。要更改属性、启动函数等的viewModel会注册到消息中。然后,另一个viewModel可以向注册到该特定消息的所有类发送消息
希望这会有所帮助。我接受了这个答案,因为我发现这是一个很好的方法,我可能会使用该模式,尽管我希望kendoUI实现了类似的功能,任何人都可以告诉我如何使用它。谢谢你的提示!