Angularjs函数调用全局

时间:2018-02-28 13:28:20

标签: angularjs

这是我的自定义控制器我写的 logout() 功能在这里工作正常

我的问题是我想在我的全局菜单页面中使用

如何实现这一目标?

TodoController.js

app.controller('TodoController',  function($state,$http,$rootScope, $scope,$auth) {
    $scope.logout = function() {
        $auth.logout().then(function() {
            localStorage.removeItem('user');
            $rootScope.authenticated = false;
            $rootScope.currentUser = null;
        });
    }

    $scope.init();

});

menu.html

<nav class="navbar navbar-inverse navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <a class="navbar-brand" href="javascript:void(0)">Logo</a>
    </div>
    <ul class="nav navbar-nav">
      <li><a href="/#/url">Menu 1</a></li>
      <li><a href="/#/url3">Menu 2</a></li>
      <li><a href="/#/url2">Menu 2</a></li>
      <li><a href="/#/url1">Menu 2</a></li>
    </ul>
  </div>
</nav>

3 个答案:

答案 0 :(得分:0)

以与创建MenuController相同的方式创建TodoController,并在其中添加logout()方法。确保在菜单的HTML上设置MenuController,以便它可以访问该方法。

答案 1 :(得分:0)

integer

答案 2 :(得分:0)

一种选择是在您的主应用程序中定义您的退出功能。模块的运行块。运行块有点像AngularJs的主要方法。在运行块中,您可以将注销功能附加到$rootScope,如@Bimlendu Kumar的回答中所述。

    var app = angular.module('app', [])
        .run(['$auth', '$rootScope', '$window'
            function($auth, $rootScope, $window) {
                $rootScope.logout = function() {
                    $auth.logout().then(function() {
                        $window.localStorage.removeItem('user');
                        $rootScope.authenticated = false;
                        $rootScope.currentUser = null;
                    });
                }
            }

然后在menu.html中你只需在ng-click属性中添加函数调用。

<nav class="navbar navbar-inverse navbar-fixed-top">
    <div class="container-fluid">
        <div class="navbar-header">
            <a class="navbar-brand" href="javascript:void(0)">Logo</a>
        </div>
        <ul class="nav navbar-nav">
            <li><a href="/#/url">Menu 1</a></li>
            <li><a href="/#/url3">Menu 2</a></li>
            <li><a href="/#/url2">Menu 2</a></li>
            <li><a href="/#/url1">Menu 2</a></li>
            <li><a href="#" ng-click="logout()">Logout</a></li>
        </ul>
    </div>
</nav>

有关运行块的更多信息:https://docs.angularjs.org/guide/module