2013-02-26 42 views
2

多頁網站中的每個頁面都顯示一個註銷鏈接並綁定到實現身份驗證功能和狀態的視圖模型。這裏是一個簡化:如何在Knockout單擊事件後重定向到另一個頁面

<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方式重定向?我感謝大家的幫助;淘汰賽是一個夢幻般的圖書館。

+1

是否有某些原因的點擊事件不能執行重定向? – Tyrsius 2013-02-26 18:35:32

+0

嗨@Tyrius - 有趣的是,這沒有做任何事:'Logout' – 2013-02-26 19:37:00

回答

3

這不是重定向到登錄頁面的原因:

<a href="login.html" data-bind="click: logout">Logout</a> 

是因爲我不是在綁定處理程序返回true,繼續事件鏈:

self.logout = function() {   
    self.authenticated(false); 
    return true; 
}; 

解決了!

相關問題