2016-07-21 7 views
2

Angularアプリケーション内で$ digest durationを測定する必要があります(パフォーマンス監視)。

理想的には、私は$digest()を開始する直前に時間をとっておきたいと思います。

私はこのような何か(擬似コード)、私のコードで$digest機能をラップする計画:

function $digest(){ 

    1. take timestamp 
    2. call to original $digest() 
    3. take timestamp 
} 

誰もがただの知識がなくてもコール$scope.$digest()を保つように、このラッピングは、アプリケーションの残りの部分に透明でなければなりませんこのラップについて私は変更を避けたいです。angular.js

質問:どうすればいいですか? [角度1.3の使用]

答えて

0

rootscopeのプロトタイプで$ digestをオーバーライドする必要があります。

angular.module('myModule', []).run(run); 

function run($rootScope) { 
    var scopeProto = Object.getPrototypeOf($rootScope); 
    var originalDigest = scopeProto.$digest; 
    scopeProto.$digest = function(){ 
     console.log("Hello from digest!"); 
     originalDigest.call(this); 
    } 
} 

Fiddle(結果を見るためにコンソールを開いてください)。

+0

'Object.getPrototypeOf()'について認識していませんでした。素晴らしい特許、ありがとう! – Illidan

関連する問題