2016-06-01 5 views
0

Я хочу изменить ng-if значения «LoggedIn» в index.html из моих login/login.js с помощью этой кодыИзменения нг-если заявление в app.js от контроллера

$scope.doLogin = function() { 
    console.log('Logging in as ', $scope.loginData.email); 
    AuthService.login($scope.loginData) 
    .then(function() { 
     $rootScope.loggedIn = true; 
     $scope.layout = 'styles'; 
     $state.go('app.mainReg'); 

     $stateParams.id = $currentUserId; 
     console.log($currentUserId); 
    }); 
}; 

и у меня есть этот вид stateProvider в мой app.js

.state('app', { 
      url:'/', 
      abstract: true, 
      views:{ 
       'bodyLogin': { 
        templateUrl : 'views/login/body.html', 
        controller : 'BodyController' 
       }, 
       'bodyMain': { 
        templateUrl : 'views/main/body.html', 
        controller : 'BodyController' 
       } 
      } 
     }) 
.state('app.mainUnreg', { 
      url:'home', 
      views: { 
       '[email protected]': { 
        templateUrl : 'views/login/home.html', 
        controller : '' 
       } 
      } 
     }) 
.state('app.mainReg', { 
      url:':userID', 
      views: { 
       '[email protected]': { 
        templateUrl : 'views/main/header.html', 
        controller : '' 
       }, 
       '[email protected]': { 
        templateUrl : 'views/main/sidebar.html', 
        controller : '' 
       }, 
       '[email protected]': { 
        templateUrl : 'views/main/home.html', 
        controller : '' 
       }, 
       '[email protected]': { 
        templateUrl : 'views/main/footer.html', 
        controller : '' 
       } 
      }, 
      controller: 'MainController' 
     }) 

и отрывают каждое состояние по DIV

<div ng-if="!loggedIn" ui-view="bodyLogin" class="site-wrapper" ui-sref-active="app.mainUnreg"></div> 

<div ng-if="loggedIn" ui-view="bodyMain" ui-sref-active="app.mainReg"></div> 

но, кажется, что это не дает никакого эффекта, даже я вошел в систему и перенаправлены, заявление на loggedIn не изменилась, по-прежнему false

Я поместил файлы в GitHub

ли кто-нибудь есть какая-то идея, где я допустил некоторую ошибку, поэтому мой оператор loggedIn не может быть изменен?

+1

убедитесь, что вы не затенять переменную rootScope с переменной в области видимости контроллера с тем же именем –

+0

@NitsanBaleli Я просто понял, что я всегда называю «$ scope.loggedIn = ложь» внутри мой контроллер, так что это не сработало. Спасибо за советы! – Lyriene

ответ

0

Просто измените <div ng-if="!loggedIn" на <div ng-if="!$root.loggedIn"

+0

Спасибо, Роман. Я просто понял, что я всегда называю '$ scope.loggedIn = false' внутри моего контроллера, поэтому он не работает. Спасибо! – Lyriene