多页面站点中的每个页面都显示一个注销链接并绑定到实现身份验证功能和状态的视图模型。这是一个简化:
<a href="#" data-bind="click: logout">Logout</a>
...
function ViewModel() {
var self = this;
self.authenticated = ko.observable(true);
self.logout = function () {
self.authenticated(false);
};
};
注销后,我想重定向回网站的登录页面。我知道我可以在注销功能中做到这一点:
self.logout = function () {
self.authenticated(false);
window.location.href = "login.html";
};
但是为了在视图和视图模型之间保持更清晰的分离,我宁愿视图响应视图模型的身份验证属性的变化。我设想这样的事情,虽然这个例子不起作用 - 脚本块没有隐藏,因此重定向总是发生:
<div data-bind="ifnot: authenticated()"><script>alert("window.location.href = 'login.html';");</script></div>
那么,我们如何以 MVVM 的方式重定向到这里呢?感谢大家的帮助;Knockout 是一个很棒的图书馆。