使用此處發現的Breeze Angular SPA模板http://www.breezejs.com/samples/breezeangular-template,我試圖更新用戶認證後更改的菜單。使用Angular登錄後刷新MVC視圖
我的示例與默認模板略有不同,因爲我已將「登錄」和「註冊」視圖移至模態窗口中。當模式在成功登錄後關閉時,MVC視圖(而不是角視圖)中的菜單不會更新,因爲不會發生完整的頁面刷新。
在SPA模板中,在進入SPA之前需要驗證,然後發生硬重定向/刷新並加載SPA。就我而言,您可以在進行身份驗證之前瀏覽SPA中的視圖/頁面。
MVC視圖代碼段(查看/主頁/ Index.cshtml)
...
<li>
@if (@User.Identity.IsAuthenticated)
{
User Logged In: @User.Identity.Name
}
else
{
User Logged In: Annon
}
</li></ul>
<div ng-app="app">
<div ng-view></div>
</div>
....
我有工作的根本重定向,登錄後,頁面刷新硬如果json.redirect設置爲 '/' 。但是,如果它設置爲當前頁面,即'#/ about',Angular將處理路由並因此不會發生硬刷新,因此菜單不會更新。
阿賈克斯登錄代碼段(應用/ ajaxlogin.js)
... part of login/register function
if (json.success) {
window.location = json.redirect || location.href;
} else if (json.errors) {
displayErrors($form, json.errors);
}
...
這可能使用我的當前設置呢?或者,我是否需要將菜單移到SPA內的某個位置,然後使用Angular確定要顯示的菜單?如果後者,在如何最好地做到這一點方向?我對Angular和Breeze都很陌生。
謝謝@PW卡德。我正在努力調整Angular的TempHire模板,所以我很熟悉,並會進一步研究它是如何工作的。我的應用程序通過以類似的方式強制刷新(window.location ='/'),但我希望它是無縫的,因爲SPA的推理部分是流暢的UI。根據你的建議,TempHire項目中仍然需要「硬」刷新? – roadsunknown
是的,這是他們使用。這將會更加複雜,但你應該能夠以令人耳目一新的方式完成同樣的事情,但這對我來說是一個很好的起點 –