使用此处找到的 Breeze Angular SPA 模板http://www.breezejs.com/samples/breezeangular-template,我正在尝试更新在用户验证后更改的菜单。
我的示例与默认模板略有不同,因为我将 Login 和 Register 视图移到了模式窗口中。当模式在成功登录后关闭时,位于 MVC 视图(而不是 Angular 视图)中的菜单不会更新,因为不会发生完整的页面刷新。
在 SPA 模板中,在进入 SPA 之前需要进行身份验证,然后发生硬重定向/刷新并加载 SPA。就我而言,您可以在进行身份验证之前浏览 SPA 中的视图/页面。
MVC 查看代码片段 (Views/Home/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 会处理路由,因此不会发生硬刷新,因此不会更新菜单。
Ajax 登录代码片段 (App/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 的新手。