我尝试在视图和模态中获得相同的计时器。 两者都使用相同的范围:
$scope.openTimer = function() {
var modalInstance = null;
modalInstance = $modal.open({
templateUrl: 'modal-timer.html',
controller: 'ModalTimerController',
scope: $scope,
backdrop: 'static',
size: "sm"
});
modalInstance.result.then(function() {
console.log('onCloseModal');
});
}
这是我的plunker。
我遇到的问题是我无法在视图和模态之间共享运行时间(来自计时器指令)。模态总是随复位计时器打开。
有没有办法在视图和模态中分享完全相同的计时器运行时间?
答案 0 :(得分:0)
您可以将服务用于计时器功能。
https://docs.angularjs.org/guide/services
我会将范围上的所有函数移到服务上,然后仅使用范围来显示当前时间。通过这种方式,您可以将服务注入控制器,控制器只负责显示信息。一个服务是一个单例,意味着它只有一个实例,它只是在你注入它的地方传递。因此无论它处于什么状态,它都会被注入的任何控制器共享。
它看起来像这样(TimeService保存当前在你的控制器中的代码):
controller: ['$scope', '$element', 'TimeService',
function($scope, $element, TimeService) {
$scope.timeDisplay = TimeService.currentTime;
}
]
当然,您必须编写该服务,并让它的计算为currentTime分配一个值。