我有我的Durandal路線配置如下。如何動態更改Durandal路線的可視性?
var routes = [
....... More Routes Here.....
{
url: 'login',
moduleId: 'viewmodels/login',
name: 'Log In',
visible: true,
caption: 'Log In'
}, {
url: 'logout',
moduleId: 'viewmodels/logout',
name: 'Log Out',
visible: false,
caption: 'Log Out'
}, {
url: 'register',
moduleId: 'viewmodels/register',
name: 'Register',
visible: false,
caption: 'Register'
}];
一切都在按預期工作。我希望在登錄時能夠在我的導航中激活「註銷路線」,並且我的登錄按鈕變爲不可見。我嘗試了下面的代碼,儘管沒有拋出任何錯誤,但它並沒有改變界面中任何東西的可見性。
var isLoggedIn = ko.observable(false);
isLoggedIn.subscribe(function (newValue) {
var routes = router.allRoutes();
if (newValue == true) {
for (var k = 0; k < routes.length; k++) {
if (routes[k].url == 'logout') {
routes[k].visible = true;
}
if (routes[k].url == 'login') {
routes[k].visible = false;
}
}
} else {
for (var i = 0; i < routes.length; i++) {
if (routes[i].url == 'logout') {
routes[i].visible = false;
}
if (routes[i].url == 'login') {
routes[i].visible = true;
}
}
}
});
我相信這不起作用,因爲可見的是沒有可觀察到的,isActive是計算沒有寫入能力,因此也不起作用。如何在導航菜單中動態更改路線的可見性?
看看Joseph的答案:http://stackoverflow.com/questions/16031226/durandal-js-change-navigation-options-per-area?answertab=active#tab-top。這應該可以幫助你。 – Yogesh