2015-11-26 2 views
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.

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

ответ

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; 
} 

Внесите это обслуживание в ваш контроллер и используйте его, чтобы получить и изменить состояние счета.

Смежные вопросы