范围angular-modal和angular-timer指令

时间:2015-01-09 17:17:05

标签: jquery angularjs timer angularjs-directive angular-ui-bootstrap

我尝试在视图和模态中获得相同的计时器。 两者都使用相同的范围:

$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

我遇到的问题是我无法在视图和模态之间共享运行时间(来自计时器指令)。模态总是随复位计时器打开。

有没有办法在视图和模态中分享完全相同的计时器运行时间?

1 个答案:

答案 0 :(得分:0)

您可以将服务用于计时器功能。

https://docs.angularjs.org/guide/services

我会将范围上的所有函数移到服务上,然后仅使用范围来显示当前时间。通过这种方式,您可以将服务注入控制器,控制器只负责显示信息。一个服务是一个单例,意味着它只有一个实例,它只是在你注入它的地方传递。因此无论它处于什么状态,它都会被注入的任何控制器共享。

它看起来像这样(TimeService保存当前在你的控制器中的代码):

controller: ['$scope', '$element', 'TimeService',
  function($scope, $element, TimeService) {
    $scope.timeDisplay = TimeService.currentTime;
  }
]

当然,您必须编写该服务,并让它的计算为currentTime分配一个值。