Угловой UI Router сбросил $ scope

0

Я строю викторину с помощью 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.

Как я могу исправить эту проблему?

Теги:

1 ответ

4
Лучший ответ

Контроллеры не являются одиночными, они создаются каждый раз, когда вы используете их в 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;
}

Внесите эту услугу в свой контроллер и используйте ее для получения и изменения состояния счета.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню