Angular SPA,$ rootScope变量在页面重新加载后不会触发HTML更新

时间:2016-02-09 17:04:42

标签: angularjs layout single-page-application rootscope

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没有获取更改,因此简单布局类仍然存在。

0 个答案:

没有答案