如何处理Angular.js中的嵌套控制器

时间:2014-05-21 14:14:50

标签: angularjs controllers

我有一个处理导航栏(用户工作人员等)的控制器,它包含了我代码中的所有其他控制器。

<div class="container" ng-controller="wrapCtrl">

... navbar...

<div ng-view></div>

</div>

基本上我想在整个脚本中保持导航栏的顶部,它将包含视图链接并处理一些与用户相关的功能。这给我带来了很多麻烦,因为其他一切(登录,仪表板)等都有自己的控制器。与其他控制器同步更新导航栏是非常有问题的。现在我正在努力使用在wrapCtrl中处理的logout函数。注销功能只需删除令牌,并使用$ location.path('/ login')将用户重定向到登录页面。问题是,当位置更改在父控制器中触发时(是wrapCtrl),子控制器(它是仪表板控制器)在实际重定向之前重新初始化。由于用户在位置更改期间已注销,因此重新初始化会导致仪表板控制器中的所有功能生气。我不认为这是必要的,但如果我不这样做,我会受到抨击,所以这里是退出功能

$scope.logout = function logout() {
            if (AuthenticationService.isLogged) {
                localStorageService.remove('token');
                UserInfoService.setUsrName("");
                $location.path("/login");
            }
        }

这应该像现在这样有问题吗?或者这(嵌套控制器?)不是处理我情况的正确方法?我知道ui-router。但我想知道这是否可以在不使用其他模块的情况下解决。

0 个答案:

没有答案