Angularjs 我可以捕获从$compiled指令引发的所有异常吗?
我有一个角度指令(我称之为Angularjs 我可以捕获从$compiled指令引发的所有异常吗?,angularjs,Angularjs,我有一个角度指令(我称之为parentDirective),它$compiles一些childDirective,并将该子指令附加到自身。A洛杉矶: // Link function of "parentDirective": function link($scope, $elem, $attrs) { // ... var widget = $compile('<child-directive></child-directive>')($scope.$n
parentDirective
),它$compile
s一些childDirective
,并将该子指令附加到自身。A洛杉矶:
// Link function of "parentDirective":
function link($scope, $elem, $attrs) {
// ...
var widget = $compile('<child-directive></child-directive>')($scope.$new());
$elem.find('.some-target').append(widget);
// ...
}
//parentDirective的链接函数:
函数链接($scope、$elem、$attrs){
// ...
var小部件=$compile(“”)($scope.$new());
$elem.find('.some target').append(小部件);
// ...
}
我希望能够优雅地捕获从childDirective
中抛出的任何异常,这样我就可以在parentDirective
中显示一条错误消息,指出存在问题
现在,我知道Angular有一个$exceptionHandler
服务,我可以覆盖它(或者我可以使用装饰器来添加功能,而不覆盖),但这是一个全局性的东西,不能用来确定首先抛出错误的childDirective
的实例
我能想到的解决这个问题的一种方法是捕获childDirective
中的错误,然后在parentDirective
的控制器API上调用errorshown
函数,但是如果所有异常都由parentController
本身捕获,而不使用childDirective
中的任何附加逻辑,那就更好了。想法<代码>:)
[更新]以下是我的问题
注意:我暂时需要使用Angular 1.2.25。长话短说不,如果出现常规错误,则无法执行此操作,您可以使用作用域。$emit从子对象发出事件以通知父对象,并在子对象上使用$来获取事件,但如果经常出现错误,则编译代码将使用try-catch调用link函数,并调用$exceptionHandler您指的是哪种特定的异常?示例?Hye@charlietfl,我主要是想捕捉抛出的
错误。。。i、 例如,用户定义的异常。这在阿拉很不清楚。对不起。因此,如果在childDirective
的链接或控制器函数中,我会这样做:抛出“发生了不好的事情!”代码>我希望parentDirective
能够捕捉到它。如果你抛出它,为什么你不能确定它的范围?只是看起来你还没有完全理解这一点。如果您希望捕获诸如$compile
之类的错误,那就不同了。更新了代码中的链接位置,指向了错误的try-catch initiallyah,@shaunhusain我希望它不会用$exceptionHandler将其包装,但这是有意义的。我试图远离事件,但我想这真的是我唯一的选择。。。在parentDirective控制器上公开API方法会限制太多。谢谢