私はjavascript初心者で、角度を学ぼうとしています。
次のような簡単な angularJS コードがあります。
<div ng-controller="todoController">
<span> temp = {{tempVal()}} </span>
</div>
バグは簡単です.tempValはメソッドではなく文字列です.
私の問題 (および質問) は、デバッグ時にこの事実をどのように発見するかということです。
私は Chrome を使用しており、Batarang 拡張機能がインストールされていますが、得られるのは不可解なスタック トレースだけです。
TypeError: string is not a function
at http://localhost:6202/lib/angular-1.0.4/angular.js:6213:13
at Object.$interpolate.fn (http://localhost:6202/lib/angular-1.0.4/angular.js:4829:22)
at Object.watchExpression (http://localhost:6202/AddSomeControl/index.html:416:29)
at Object.Scope.$digest (http://localhost:6202/lib/angular-1.0.4/angular.js:7783:38)
at Object.Scope.$apply (http://localhost:6202/lib/angular-1.0.4/angular.js:7991:24)
at Object.$delegate.__proto__.$apply (http://localhost:6202/AddSomeControl/index.html:500:30)
at http://localhost:6202/lib/angular-1.0.4/angular.js:932:13
at Object.invoke (http://localhost:6202/lib/angular-1.0.4/angular.js:2813:25)
at bootstrap (http://localhost:6202/lib/angular-1.0.4/angular.js:930:12)
at angularInit (http://localhost:6202/lib/angular-1.0.4/angular.js:906:5) angular.js:5601
複雑なアプリケーションでこれらのツールを使用して、エラーがそのtempVal()行のどこかにあることを発見する方法を理解しようとして立ち往生しています。
エラーがログに記録されているときにブレークポイントを設定してコールスタックを調べてみたところ、$get.Scope.$digest でキャッチされた例外が表示され、親スコープ ID (this.target.$id) を教えてくれる可能性があります。どの「ウォッチャー」(this.length) がクラッシュしたか、および以前に完成した html 要素 (this.value) と一緒に...それが最善の方法ですか? なんという痛み:(