【发布时间】:2016-02-04 02:47:15
【问题描述】:
我在可能的应用程序上有不同的页面,它们有自己的控制器。其中一个有一个 $interval 函数,比如说一个计时器。单击一个按钮将启动此间隔功能,该功能每秒更新一次。我想要的是,我希望能够转到我的应用程序中的任何其他页面(调用不同的控制器),但我希望我的间隔继续运行直到我从第一个控制器明确停止它。 rootScope 区间可以这么说。我该怎么做?
编辑:感谢 Chris 和 Patrick,我现在有了一个简单的服务,如下所示:
.service('TimerService', function($interval) {
var promise;
var timerSeconds = 0;
this.start = function () {
promise = $interval(function () {
timerSeconds++;
}, 1000);
};
this.stop = function () {
promise.cancel(interval);
timerSeconds = 0;
};
this.getTimer = function() {
return timerSeconds;
}
})
我还将我的当前值 (timerSeconds) 存储在此服务中。但是如何将此值同步到我的控制器?该服务增加 timerSeconds,在我的控制器开始时,我通过它的 getTimer() 函数从该服务中读取它,但它显然不会在我的控制器上更新。 如何将此服务属性与我的本地属性同步?
编辑:
当我将我的服务属性定义为一个对象并将 timerSeconds 定义为该对象内的数字时(似乎原语无法同步):
var timer = {seconds : 0};
this.getTimer = function() {
return timer;
}
并通过该 getter 从我的控制器获取此对象:
vm.timer = TimerService.getTimer();
它们都是同步的。
【问题讨论】:
标签: javascript angularjs angularjs-directive angularjs-scope