我有一个带有两个控制器的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()实现的
最佳答案
如果需要,该$ scope.date具有您需要观看正常运行时间的实际滴答时间-像这样:
$scope.$watch(
function() { return DateService.updateTime; },
function(newValue){ $scope.date = newValue;}
);
这是一个笨拙的人:http://plnkr.co/edit/2obW7z?p=preview