Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 如何包装$digest()?_Angularjs - Fatal编程技术网

Angularjs 如何包装$digest()?

Angularjs 如何包装$digest()?,angularjs,Angularjs,我需要在Angular应用程序(性能监视)中测量$digest duration 理想情况下,我希望在启动$digest()之前花点时间,在执行之后再花点时间 我计划用我的代码包装$digest函数,类似这样(伪代码): 此包装对应用程序的其余部分应该是透明的,因此每个人都只需保持调用$scope.$digest(),而不必了解此包装。我希望避免对angular.js进行任何修改 问题:我怎样才能做到这一点?[使用Angular 1.3]您需要在rootScope原型中重写$digest ang

我需要在Angular应用程序(性能监视)中测量$digest duration

理想情况下,我希望在启动
$digest()
之前花点时间,在执行之后再花点时间

我计划用我的代码包装
$digest
函数,类似这样(伪代码):

此包装对应用程序的其余部分应该是透明的,因此每个人都只需保持调用
$scope.$digest()
,而不必了解此包装。我希望避免对
angular.js进行任何修改


问题:我怎样才能做到这一点?[使用Angular 1.3]

您需要在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);
    }
}

(打开控制台查看结果)。

未意识到“Object.getPrototypeOf()”的问题。伟大的专利,谢谢!
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);
    }
}