我有一个带有两个控制器的angularjs应用程序,他们将使用相同的工厂来获取时间。这主要是因为当您切换控制器时,时钟将持续存在。我已经对工厂进行了几次不同的尝试和实施,以及它是如何被控制器调用的,但到目前为止还没有工作。
有人会介意看我的代码并告诉我们什么不知道吗?
app.controller('SettingsCtrl', function($scope, DateService) {
$scope.date = DateService.updateTime;
DateService.tick();
});
app.factory('DateService', function($timeout) {
var service = {
updateTime: {},
tick: function() {
service.updateTime = new Date();
// runs update function every second
$timeout(service.tick, 1000);
}
};
return service;
});
我知道我需要在控制器中启动timeout(),我试图用DateService.tick()
来实现答案 0 :(得分:2)
如果你愿意,$ scope.date具有观察正常运行时间所需的实际滴答时间 - 如下所示:
$scope.$watch(
function() { return DateService.updateTime; },
function(newValue){ $scope.date = newValue;}
);
这是一个plunkr:http://plnkr.co/edit/2obW7z?p=preview