我对 AngularJS 很陌生,所以我需要一些正确的方向。
任务是创建某种小部件,显示从任何用户操作到请求的页面完成呈现所花费的时间。
我们将在表示层使用 AngularJS,后端将是 Microsoft 的 Web API。
所以我想我可以使用浏览器的 Navigation Timing API 并将其包装在 AngularJS 指令上,所以我尝试了这个:
angular.module('performanceDirective', [])
.directive('pagePerformance', function(){
return {
restrict: 'AE',
replace: 'true',
template: '<div><label id="loadTimeEllapsed">Total Load Time:{{totalLoadTime}}</label></div>',
scope: {},
link: function (scope, elem, attrs) {
scope.$watch('window.performance.timing', function (newValue, oldValue) {
var timing = window.performance.timing;
var userTime = timing.loadEventEnd - timing.navigationStart;
scope.totalLoadTime = userTime;
});
}
};
});
但似乎缺少一些东西,因为即使我正在执行调用后端的操作,主页加载后显示的数字也永远不会更新。
如果我们修复任何失败的地方,这是否真的可行,或者这是一个死胡同,我们需要找到另一个选择?
更新
该指令的使用与它无关,基本上它只是在页面上抛出的元素:
<body ng-app="myApp">
<div class="navbar">
<div class="navbar-inner">
<ul class="nav">
<li><a href="#/someAction">Some Action</a></li>
</ul>
</div>
</div>
<div class="row">
<div class="span4"><data-page-performance /></div> <!-- The Directive -->
<div class="span10" ng-view></div>
</div>
</body>
显然,该指令仅在我已经导航到页面后刷新页面时才有效,但是如果我单击将触发 AngularJS 控制器上的操作的元素,则性能数字完全不受影响。