我有一个带有两个控制器的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

07-23 06:47