调试:ng-click和不存在的函数

时间:2015-11-13 10:56:21

标签: javascript angularjs

在解决问题之前,我有一个元素(在HTML模板中),其中有一个ng-click,它正在调用一个不存在的函数。

有没有办法在控制台中启用严格模式(比如在JS中使用strict)或类似的东西?

更新:我还尝试使用$ compileProvider.debugInfoEnabled(true)而没有成功

1 个答案:

答案 0 :(得分:8)

简答:在vanilla AngularJS中没有选项可以做到这一点,但是可以通过hack来完成。

长答案:您在DOM事件处理指令中使用的表达式(例如ng-click,ng-keydown和ng-submit)由Angular的$parse服务编译。你可以在code for the event directive内看到这发生的地方。 $ parse服务包括它自己的词法分析器和解析器的实现,它将表达式编译成JavaScript。

生成的JavaScript有一堆安全检查来防止事情发生,例如使用未定义函数引发的错误。带有以下代码的按钮:

<button ng-click="handleClick()">Click Me!<button>

最终将为执行类似于此的事件处理程序生成JavaScript:

if ($scope.handleClick != null) {
    return $scope.handleClick();
} else {
    return undefined;
}