我有一个带有两个 Controller 的 angularjs 应用程序,它们将使用同一个工厂来获取时间。这主要是为了当您切换 Controller 时时钟将保持不变。我对工厂以及 Controller 如何调用它进行了多次不同的尝试和实现,但到目前为止还没有成功。
有人介意看看我的代码并告诉我缺少什么吗?
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;
});
我知道我需要在 Controller 中启动 timeout(),我正在尝试使用 DateService.tick() 来实现
最佳答案
如果您愿意,$scope.date 具有您观察正常运行时间所需的实际滴答时间 - 像这样:
$scope.$watch(
function() { return DateService.updateTime; },
function(newValue){ $scope.date = newValue;}
);
这是一个 plunkr:http://plnkr.co/edit/2obW7z?p=preview
关于javascript - angularjs 两个 Controller 共享工厂,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20978670/