首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$on不抓住$broadcast

$on不抓住$broadcast
EN

Stack Overflow用户
提问于 2015-11-12 17:17:23
回答 1查看 76关注 0票数 0

我有一个角项目,我想要创建身份验证机制,所以我有以下控制器:

代码语言:javascript
复制
angular.module('authModule')
.controller('LoginCtrl', function($rootScope, $location, loginRESTService, UserService){
    var login = this;

    function signIn(user) {
        loginRESTService.login(user)
            .then(function(response) {
                console.log(response);
                user.access_token = response.user_id;
                UserService.setCurrentUser(user);
                $rootScope.$broadcast('authorized');
                $location.path("/formList");
            });
    }
})

另外,我有一个主控制器,它有以下方法

代码语言:javascript
复制
angular.module('authModule')
.controller('MainCtrl', function ($rootScope, $state, LoginService, UserService) {
    var main = this;

    $rootScope.$on('authorized', function() {
        console.log("ENTRE CON PERMISO");
        main.currentUser = UserService.getCurrentUser();
    });

    $rootScope.$on('unauthorized', function() {
        console.log("ENTRE SIN PERMISO");
        main.currentUser = UserService.setCurrentUser(null);
        $state.go('login');
    });   
})         

问题是‘授权’和‘未经授权’从来没有被调用,也不知道为什么

我的app.js文件

代码语言:javascript
复制
angular
  .module('pysFormWebApp', [
    ...
    'translateModule',
    'formModule',
    'authModule'
  ])
  .config(function ($routeProvider,  $httpProvider) {
    $routeProvider  
      .when('/', {
        templateUrl: 'views/main.html',
        controller: 'MainCtrl',
        controllerAs: 'main'
      })    
      .when('/login', {
        templateUrl: 'views/auth/login.html',
        controller: 'LoginCtrl',
        controllerAs: 'login'
      }) 
      .otherwise({
        redirectTo: '/'
      });      

我的index.html (只有一部分是因为它太长了,是生成溜溜球角的索引)

代码语言:javascript
复制
    <div ng-controller="MainCtrl as main" >
        <button ng-if="main.currentUser" class="btn btn-default navbar-btn" ng-click="main.logout()">Logout <strong>{{main.currentUser.name}}</strong> 
        </button>
    </div>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-12 17:24:33

首先,您不是在广播“未经授权”事件。正因为如此,$rootScope.on('unauthorized')无法工作。

第二。可能是在登录控制器之前运行主控制器,因此控制器没有捕获事件。

如果它能解决你的问题就告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33677392

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档