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