我正在使用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。
如何解决此问题?
答案 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;
}
将该服务注入您的控制器并使用它来获取和修改分数状态。