2017-01-05 71 views
0

我的身體由MainController控制。在身體中,我有另一個嵌套控制器。在我的index.html,我具有由嵌套控制器控制的div元件:修改子控制器內的父控制器的變量AngularJS 1.x

的index.html

<body ng-controller="MainController"> 
    <div ng-controller="LoginController" ng-hide="isLoggedIn"></div> 
    <div class="navbar" ng-hide="!isLoggedIn"> 
    <!-- A form which calls login() function inside LoginController --> 
    </div> 
</body> 

MainController:

angular.module('DemoApp') 
    .controller('MainController', ['$scope', function ($scope) { 
    $scope.isLoggedIn = false; 
}]); 

的LoginController

angular.module('DemoApp') 
    .controller('LoginController', ['$scope', '$location', function ($scope, $location) { 
    $scope.login = function() { 
     if($scope.loginCredentials.username === 'username' && $scope.loginCredentials.password === 'password') { 
      $scope.parent.isLoggedIn = true; /* here, how to modify this variable */ 
      $location.path('/home'); 
     } 
    }; 
}]); 

我想要做的就是從我的嵌套控制器中更改MainController的變量,即isLoggedIn。我用$scope.parent,但它顯示unknow provider parent。如何實現這一目標?

+1

使用$ localStorage存儲isLoggedIn。並在需要時從$ localStorage獲取。直到您手動清除密鑰之前,此數據纔可用。 –

+0

@SharanDeSilva謝謝,我將在未來使用它。 –

回答

2

您需要使用$parent來獲取父控制器作用域,然後才能訪問各種方法和屬性。

$scope.$parent.isLoggedIn = true; 
+0

謝謝!另外,如果我再次進入主頁,我需要將該變量設置爲false。怎麼做? –