修改$ rootscope时,变量类没有改变

时间:2016-03-20 17:19:37

标签: angularjs ng-class angularjs-rootscope

我有两个控制器:

家长控制器

'use strict';

app.controller('CoreController', function($scope,$window,$location,$rootScope,AuthFactory) {
    var requiredLogin = true;

    $rootScope.bodyClass = '';
    $rootScope.pageTitle = '';

    $scope.Usuario = AuthFactory.user();
});

儿童控制器

'use strict';

app.controller('SignController', function($scope, $controller, $stateParams,$rootScope, AuthFactory) {
    angular.extend(this, $controller('CoreController', {$scope: $scope}));

    $scope.EmailDefault = $stateParams.email;

    if(angular.isDefined($stateParams.pass)){
        $scope.SpecifyPass = $stateParams.pass;
    }else{
        $scope.SpecifyPass = true;
    }

    switch($stateParams.mode) {
        case "github":
            $rootScope.bodyClass = "dgdfg";
        break;
        case "google":
            $rootScope.bodyClass = "login_registro";
        break;
        default:
            $rootScope.bodyClass = "login_registro";
    }
});

我设置了这样的课程:

<body id="inicio" ng-class="bodyClass" data-spy="scroll" data-target=".navbar-fixed-top" data-offset="200">

但是当我尝试修改$ rootscope时,这个类并没有改变。

我做错了什么?

2 个答案:

答案 0 :(得分:0)

试试这个,

<body id="inicio" ng-class="$root.bodyClass" data-spy="scroll" data-target=".navbar-fixed-top" data-offset="200">

但实际上根本不使用rootcope可能是一个好主意。

答案 1 :(得分:0)

我解决了将“statechangedsucces”事件添加到Child控制器中的switch语句:

'use strict';

app.controller('SignController', function($scope, $controller, $stateParams,$rootScope, AuthFactory) {
    angular.extend(this, $controller('CoreController', {$scope: $scope}));

    $scope.EmailDefault = $stateParams.email;

    if(angular.isDefined($stateParams.pass)){
        $scope.SpecifyPass = $stateParams.pass;
    }else{
        $scope.SpecifyPass = true;
    }

    $scope.$on('$stateChangeSuccess', function(event, toState, toParams, fromState, fromParams){
        switch($stateParams.mode) {
            case "github":
                $rootScope.bodyClass = "login_github";
            break;
            case "google":
                $rootScope.bodyClass = "login_google";
            break;
            default:
                $rootScope.bodyClass = "login_registro";
        }
    });
});