范围 angular-modal 和 angular-timer 指令
scope angular-modal and angular-timer directive
我尝试在视图和模式中使用相同的计时器。
两者在相同范围内工作:
$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。
我遇到的问题是我无法在视图和模式之间共享 运行 时间(来自计时器指令)。模态框始终以重置计时器打开。
有什么方法可以在视图和模态中共享完全相同的计时器 运行 时间?
您可以为您的计时器功能使用服务。
https://docs.angularjs.org/guide/services
我会将作用域上的所有功能移出到服务中,然后仅使用作用域显示当前时间。这样,你就可以将服务注入到控制器中,控制器只负责显示信息。服务是单例的,这意味着它只有一个实例,并且它会在您注入它的任何地方传递。因此,无论它处于什么状态,都会在它注入的任何控制器之间共享。
它看起来像这样(TimeService 保存当前控制器中的代码):
controller: ['$scope', '$element', 'TimeService',
function($scope, $element, TimeService) {
$scope.timeDisplay = TimeService.currentTime;
}
]
当然,您必须编写服务,并让它的计算为 currentTime 赋值。
我尝试在视图和模式中使用相同的计时器。 两者在相同范围内工作:
$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。
我遇到的问题是我无法在视图和模式之间共享 运行 时间(来自计时器指令)。模态框始终以重置计时器打开。
有什么方法可以在视图和模态中共享完全相同的计时器 运行 时间?
您可以为您的计时器功能使用服务。
https://docs.angularjs.org/guide/services
我会将作用域上的所有功能移出到服务中,然后仅使用作用域显示当前时间。这样,你就可以将服务注入到控制器中,控制器只负责显示信息。服务是单例的,这意味着它只有一个实例,并且它会在您注入它的任何地方传递。因此,无论它处于什么状态,都会在它注入的任何控制器之间共享。
它看起来像这样(TimeService 保存当前控制器中的代码):
controller: ['$scope', '$element', 'TimeService',
function($scope, $element, TimeService) {
$scope.timeDisplay = TimeService.currentTime;
}
]
当然,您必须编写服务,并让它的计算为 currentTime 赋值。