Angular UI路由器重置$ scope

时间:2015-11-26 10:56:51

标签: angularjs

我正在使用AngularJS和UI路由器构建测验。

我的应用程序结构如下:

 - intro screen
 - app screen (where you play the actual quiz)
 - results screen (where i display the score)

该应用使用相同的控制器(MainCTRL)。我以$scope.score的分数存储在MainCTRL中。

问题在于当我$state.go('results');重置控制器时,我认为$scope.score等于0。

如何解决此问题?

1 个答案:

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

将该服务注入您的控制器并使用它来获取和修改分数状态。