angularjs两个控制器共享工厂

时间:2014-01-07 18:05:16

标签: javascript angularjs service controller factory

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

来实现

1 个答案:

答案 0 :(得分:2)

如果你愿意,$ scope.date具有观察正常运行时间所需的实际滴答时间 - 如下所示:

$scope.$watch(
   function() { return DateService.updateTime; }, 
   function(newValue){ $scope.date = newValue;}
);

这是一个plunkr:http://plnkr.co/edit/2obW7z?p=preview