У меня есть мое тело, контролируемое 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
. Как достичь этого?
Использовать $ localStorage для хранения isLoggedIn. и получить его из $ localStorage, когда это необходимо. Эти данные доступны до тех пор, пока вы вручную не очистите ключ. –
@SharanDeSilva благодарит, я буду использовать это в будущем. –