如何在html中调用rootcope函数 - Angular Js

时间:2017-02-07 23:48:11

标签: javascript angularjs angularjs-rootscope

我已经制作了一个rootscope函数,我实际上正在注销用户。但我不知道如何在一个视图中调用它。

我的职能是

    $rootScope.logout = function () {
            $cookies.remove('auth_token');
            $cookies.remove('role');
            $cookies.remove('status');
            $cookies.remove('id');
            $location.path('/signin');
//            window.alert("Logout Successfully");
            $rootScope.auth_token = $cookies.get('auth_token');
            $rootScope.role = $cookies.get('role');
            $rootScope.status = $cookies.get('status');
            $rootScope.id = $cookies.get('id');
            $rootScope.keyword_auth_token = 'Bearer ' + $rootScope.auth_token; //Need to store all of them 

            $rootScope.is_loggedin = false;
        };

我的观点是

<button ng-click="$root.logout()">Logout</button>

我已尝试$root.logout()$rootScope.logout(),但它无效。

2 个答案:

答案 0 :(得分:3)

它只是在范围内可用,因为$scope继承自$rootScope。尝试:

<button ng-click="logout()">Logout</button>

<强> UPDATE ...

由于您尝试从任何控制器外部访问$rootScope,因此没有从$scope继承的子$rootScopelogout函数将不会通过继承自动(正如我之前建议的那样)。

您必须在模块的运行块中声明$rootScope.logout功能。有关此内容的更多信息,请阅读angular docs的Module Loading & Dependencies部分。

<强> JS:

var app = angular.module('myApp', []);

app.run(function($rootScope){
  $rootScope.logout = function () {
      // ...
  }
});

现在可以使用logout函数进行调用:

<强> HTML:

<button ng-click="logout()">Logout</button>

<强> Sample Plunk - Accessing $rootScope where there is no child $scope

答案 1 :(得分:1)

<form ng-controller="Your controller name" ng-submit="logout()">
  <button type="submit">Logout</button>
</form>

确保您使用的是正确的控制器,因此它在范围内,使用ng-submit传递该功能。确保您的按钮设置为“提交”。