调试 AngularJS 的更好方法?

Better way to debug AngularJS?

所以我昨天花了大约 4 个小时试图找出 AngularJS 中的一个错误。

我最终发现我的指令有一个可选参数,并且我有一段代码试图为这个参数赋值,它抛出了一个非常无用的 angular 错误。

错误类似于:

Error: [$compile:nonassign] Expression 'undefined' used with directive 'testDirective' is non-assignable!
http://errors.angularjs.org/1.3.7/$compile/nonassign?p0=undefined&p1=testDirective
minErr/<@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:63:12
nodeLinkFn/</parentSet<@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:7652:1
parentValueWatch@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:7665:23
regularInterceptedExpression@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:12831:16
$RootScopeProvider/this.$get</Scope.prototype.$digest@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:14215:34
$RootScopeProvider/this.$get</Scope.prototype.$apply@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:14486:13
ngEventHandler/<@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:22945:17
createEventHandler/eventHandler@https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.7/angular.js:3009:9

如您所见,它告诉我导致问题的指令,但没有说明具体是哪一行 # 或语句导致了问题。

有没有更好的方法来确定是哪一行导致了这个错误而不用注释掉代码和反复试验?

我创建了一个 plunker 来说明这个问题:

http://plnkr.co/edit/zxPegBlAxUKdewdmA6Oc?p=preview

您无法获得它发生的确切行号,但如果您转到错误 link,您会发现:

http://errors.angularjs.org/1.3.7/$compile/nonassign?p0=undefined&p1=testDirective

它可能会让人深入了解它可能是什么。似乎确实提到您使用不正确(第三个错误表示未提供绑定)