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 我可以捕获从$compiled指令引发的所有异常吗?_Angularjs - Fatal编程技术网

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方法会限制太多。谢谢