【问题标题】:angularjs two controllers sharing factoryangularjs 两个控制器共享工厂
【发布时间】:2014-01-07 18:05:15
【问题描述】:

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

【问题讨论】:

    标签: javascript angularjs service controller factory


    【解决方案1】:

    如果你愿意,那 $scope.date 有你需要观看正常运行时间的实际滴答时间 - 像这样:

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

    这里有个小插曲:http://plnkr.co/edit/2obW7z?p=preview

    【讨论】:

    • 非常感谢您,解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多