【问题标题】:AngularJS - Create a dynamic, generic headerAngularJS - 创建一个动态的通用标题
【发布时间】:2014-02-17 15:48:52
【问题描述】:

在我的 AngularJS 应用程序中,我使用带有 ng-view 指令的路由器。

除此之外,我还想添加一个通用标题(所有视图都相同)。所以我做了以下事情:

<!-- index.html -->
<body ng-app="myApp">
    ...
    <div ng-controller="TopmenuCtrl" class="header">
        <div ng-include="template.url"></div>
        ...
    </div>

    <div ng-view></div>
</body>

视图是动态的,取决于会话令牌:

<!-- views/topmenu.html -->
<ul class="nav nav-pills pull-right">
  <li class="active"><a ng-href="#">Home</a></li>
  <li><a ng-href="#">About</a></li>
  <li><a ng-href="#">Contact</a></li>
  <li ng-show="token"><a ng-href="#" ng-click="doLogout()">Logout</a></li>
</ul>

还有带有注销方法的topmenu控制器:

// controllers/topmenu.js

$scope.template = {url: 'views/topmenu.html'};

$scope.doLogout = function() {
  localStorageService.clearAll();
  $window.sessionStorage.token = '';
  $location.path('/login');
};

问题是:当我在应用程序中单击“注销”时,会调用 topmenu 控制器并销毁会话,但也会调用来自路由器的主控制器并显示错误,因为会话已被销毁!

我发现防止这种情况的唯一(不令人满意的)解决方案是在应用程序的每个控制器中添加此代码:

if ($window.sessionStorage.token = '') {
    return;
}

有没有办法执行标头控制器而不是主 ng-view 控制器?

【问题讨论】:

标签: angularjs


【解决方案1】:

我终于找到了答案:https://stackoverflow.com/a/11672909/900416

现在我的注销链接看起来像:&lt;a href ng-click="doLogout()"&gt;Logout&lt;/a&gt;

【讨论】:

    猜你喜欢
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-07
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 2014-08-14
    相关资源
    最近更新 更多