我有两个控制器:
家长控制器
'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时,这个类并没有改变。
我做错了什么?
答案 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";
}
});
});