Scenario是一款SPA Angular应用。 我需要修改布局(隐藏/显示内容),无论我是否需要登录用户的网址路径。 为此,默认情况下我有以下简单布局类,并且只要isSimpleLayout为false就切换。
<body class="simple-layout" data-ng-class="{'simple-layout' : isSimpleLayout}">
isSimpleLayout是$ rootScope的一部分,并在$ routeChangeStart事件中设置如下:
$rootScope.$on("$routeChangeStart", (event, toState, toParams) => {
if (toState.hasOwnProperty("$$route")) {
var currentPath = toState.$$route.originalPath.toLowerCase();
var routeRequiresLoggedInUser = doesRouteRequireLoggedInUser(currentPath);
if (routeRequiresLoggedInUser) {
if (!isUserLoggedIn()) {
$rootScope.isSimpleLayout = true;
event.preventDefault();
$location.path("/authentication");
} else {
$rootScope.isSimpleLayout = false;
}
} else {
$rootScope.isSimpleLayout = true;
}
}
});
这段代码工作正常,唯一的问题是当我在一个我需要登录的路径时,所以isSimpleLayout是假的,我重新加载页面(点击F5),此时我调试了isSimpleLayout是正确地设置为false,但不知何故HTML没有获取更改,因此简单布局类仍然存在。