2016-03-20 5 views
0

У меня есть два контроллера:

Родитель контроллер

'use strict'; 

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

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

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

Controller Детский

'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"> 

Но когда я пытаюсь o изменить $ rootscope, класс не изменяется.

Что я делаю неправильно?

ответ

0

я решил его добавления «statechangedsucces» событие в моей переключатель заявление в контроллере ребенка:

'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"; 
     } 
    }); 
}); 
0

Попробуйте это,

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

это может быть хорошей идеей thoughto на самом деле не использовать rootscope вообще.

+0

Хорошая идея, но я стараюсь и не работают; S – 50l3r