javascript - angularjs 两个 Controller 共享工厂

标签 javascript angularjs service controller factory

我有一个带有两个 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/

相关文章:

javascript - Selenium 点击链接href与javascript

angularjs - Angular Material chalice 弹性盒布局

java - Android在Service类中使用数据库

javascript - AngularJS 从服务加载数据

c# - 为什么我的 64 位服务以 32 位运行?

javascript - 使用 jQuery 添加、复制和删除元素

javascript - 无法使用 iframe 加载外部网站

node.js - Uncaught ReferenceError : angular is not defined - Mean. IO

javascript - 根据 "map"REACT/Materialui 上单选按钮的键设置对象的颜色

javascript - 如何理解Nodejs、SPA、API的关系?