繁体   English   中英

从 chrome repl 触发 angular $exceptionHandler

[英]Fire off angular $exceptionHandler from chrome repl

我正在覆盖默认的$exceptionHandler ,类似于在 angular 的网站上看到的内容: https : //docs.angularjs.org/api/ng/service/ $exceptionHandler

效果很好。

但是,我半不清楚如何在不$emit的命名事件时如何“观察”这个过程,该事件的处理程序将错误(召唤或其他)显式传递到 $exceptionHandler (注入到 `.directive || .config || .service | .run || 等等...)。

TL:DR - 我想知道如何模拟一个未处理的异常,默认的 angular $exceptionHandler 是用来接收的 - 特别是从 chrome 控制台/REPL?

您需要在摘要循环内运行生成异常的代码。 更具体地说,您需要将它传递给$apply ,因为$digest本身不使用$exceptionHandler

$apply伪代码:

function $apply(expr) {
  try {
    return $eval(expr);
  } catch (e) {
    $exceptionHandler(e);
  } finally {
    $root.$digest();
  }
}

因此,例如,您可以从控制台执行以下操作:

window.test = function(fn) {
  angular.element(document.querySelector('.ng-scope'))
  .injector()
  .get('$rootScope')
  .$apply(fn);
}

window.test(function () { var a = b; });

window.test(function () { throw "Error"; });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM