我的自定义异常处理程序每当发生异常时都会在$http
上发送一个日志记录事件(类似于文档https://docs.angularjs.org/api/ng/service/ $ exceptionHandler中的示例)。
angular.
module('exceptionOverwrite', []).
factory('$exceptionHandler', ['$log', '$http', function($log, $http) {
return function myExceptionHandler(exception, cause) {
$http.post('myUrl.com/logErrors', cause);
$log.warn(exception, cause);
};
}]);
这可以按照需要运行......除非它没有:
问题:
Angular使用数据绑定将逻辑从控制器绑定到视图。然而,这似乎在这个星座中引起无穷大 - 循环:。
$apply
(!!)问题:
当服务器响应时,如何阻止$http
执行$apply
?在这种情况下,一个简单的“即发即弃”机制就足够了,我不关心服务器响应。
我做错了(还是我误解了循环的原因)?由于这基本上是自定义exceptionHandlers的angular-docs的基础示例,我真的很困惑,为什么它会在一个非常常见的用例中崩溃。
答案 0 :(得分:0)
好像你有类似的东西:
<div ng-bind="service.calculate()"></div>
然后它将运行每个摘要周期并产生错误。
从html中删除任何调用,这实际上是一种很好的做法 - 函数应仅在事件处理程序(ng-click)中添加,在ng-if,ng-repeat,ng-show中,...应该引用变量。 (还要避免使用过滤器,除非它们非常简单且时间便宜)