使用此处发现的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
是的,这是他们使用。这将会更加复杂,但你应该能够以令人耳目一新的方式完成同样的事情,但这对我来说是一个很好的起点 –