实施“全球战略”的最佳方式是什么;“上次更新时间”;在AngularJS?

实施“全球战略”的最佳方式是什么;“上次更新时间”;在AngularJS?,angularjs,Angularjs,我是AngularJS的noob,我正在用它来构建一个实时仪表板 我想在右上角有最后的更新时间。这应该在任何数据更改时更新。我可以用JQuery想出很多方法来实现这一点,但我想知道如何使用AngularJS“正确地”实现这一点。要扩展我的评论,我只需要创建一个显示更新时间的指令 .directive('lastUpdateTime', function() { return { scope: true, template: "Last updated: {

我是AngularJS的noob,我正在用它来构建一个实时仪表板


我想在右上角有最后的更新时间。这应该在任何数据更改时更新。我可以用JQuery想出很多方法来实现这一点,但我想知道如何使用AngularJS“正确地”实现这一点。

要扩展我的评论,我只需要创建一个显示更新时间的指令

.directive('lastUpdateTime', function() {
    return {
        scope: true,
        template: "Last updated: {{updateTime | date:'short'}}",
        link: function(scope) {
            scope.$on('data-updated', function(e, time) {
                scope.updateTime = time;
            });
        }
    };
});
将其放在应用程序中的某个位置

<p class="upper-right-hand-corner" last-update-time></p>


如上所述,如果您的指令在
$rootScope
上注册侦听器,并且其他组件使用
$rootScope.$emit
而不是
$broadcast
,则可能会提高性能

您可以使用全局
$rootScope.$broadcast
来执行此操作

或者说,你不需要一直使用整个UI,我建议你使用一个服务来处理这个问题

.service('updateTracker', [function() {
  var self = this;
  self.lastUpdateTime = new Date();
  self.updated = function() {
    self.lastUpdateTime = new Date();   
  }
}]);

然后您可以在UI中使用该服务和值。

我只需要创建一个侦听广播事件的指令。任何触发更新的组件都可以广播时间感谢指针,这似乎是一个很好的开始。经过一段时间的阅读,看起来$emit可能更合适?
$emit
只有在指令的作用域是发出事件的任何作用域的父级时才有用。在我看来,这极不可能,这比我的回答要好。这有点不理想,因为你要用整个UI来获得一个奇异值。这是类似服务的用例。@msarchet不确定“泵送整个UI”是什么意思。指令的作用域只有在特定事件发生时才会被标记为脏occurs@msarchet作用域侦听每个摘要周期上的事件最好在
$rootScope
上发出并注册
$rootScope。在
上,这样可以保证事件只传播一个级别。
.service('updateTracker', [function() {
  var self = this;
  self.lastUpdateTime = new Date();
  self.updated = function() {
    self.lastUpdateTime = new Date();   
  }
}]);