Я строю викторину с помощью AngularJS и UI Router.
У меня есть приложение, структурированное так:
- intro screen
- app screen (where you play the actual quiz)
- results screen (where i display the score)
Приложение использует тот же контроллер (MainCTRL). Я храню в MainCTRL в $scope.score
оценка.
Проблема в том, что когда я $state.go('results');
контроллер сбрасывается, я думаю, и значение $scope.score
равно 0.
Как я могу исправить эту проблему?
Контроллеры не являются одиночными, они создаются каждый раз, когда вы используете их в ng-controller
. Если вы хотите разделить состояние между контроллерами, создайте для этого службу.
angular.module('yourModule')
.service('ScoreService', ScoreService);
// If you want to use dependencies, you can inject them like that
ScoreService.$inject = ['dep1', 'dep2'];
function ScoreService(dep1, dep2) {
var self = this;
var score = 0;
self.getScore() {
return score;
}
self.setScore(value) {
score = value;
}
// Other logic
return self;
}
Внесите эту услугу в свой контроллер и используйте ее для получения и изменения состояния счета.