2013-02-07 8 views
5

Jestem noob javascript i próbuję nauczyć się kanciasty.jak debugować błędy konwersji typu w AngularJS?

mam kilka prostych angularjs kodu:

<div ng-controller="todoController"> 
    <span> temp = {{tempVal()}} </span> 
</div> 

bug jest wystarczająco łatwe, tempVal jest ciągiem znaków, a nie metoda.

Mój problem (i pytanie) brzmi: jak odkryć ten fakt podczas debugowania?

używam Chrome i zainstalowane rozszerzenie Batarang jednak wszystko mam to tajemniczy ślad stosu:

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 

utknąłem próbuje dowiedzieć się, w jaki sposób, przy użyciu tych narzędzi w kompleksie aplikacji, mogłem odkryć, że błąd jest gdzieś w pobliżu tej linii tempVal().

Próbowałem ustawić punkt przerwania w prawo, gdy błąd jest rejestrowany i sprawdziłem, czy jest to stempel, i zobacz złapany wyjątek w $ get.Scope. $ Digest, który może podpowiedzieć mi identyfikator nadrzędnego zakresu (this.target. $ id), wraz z czym "watcher" (this.length) jest on rozbity, a poprzedni zakończony element html (this.value) .... czy to najlepszy sposób? Co za ból :(

+0

Zobacz wideo na http://blog.angularjs.org/2012/07/introducing-angularjs-batarang.html. do debugowania Angulara, przynajmniej jestem w stanie naprawić teraz wszystkie rzeczy, mimo że wciąż jestem początkującym JavaScriptem – stiebitzhofer

+0

Tak, obejrzałem to, to jest dobre dla ogólnego debugowania, ale niestety to d nie radzimy sobie z sytuacjami takimi jak to, co opisuję. zasadniczo, kątowy nie ma dobrego raportowania błędów debugowania (Batarang nie jest przeznaczony do raportowania błędów, służy do sprawdzania szablonu/stanu) – JasonS

+0

Chciałbym zbadać funkcję tempVal na konsoli (po wybraniu zakresu jak pokazano na filmie) . Ale może pomogę, jeśli zamieścisz tutaj kod funkcji. – stiebitzhofer

Odpowiedz

5

odpowiedź, niestety, jest to, że nie można debugować tej klasy błędów.

dobrze, można, to się nazywa „nauczyć kątowa kompilator/VM i debugowanie”

Nie ma przyjaznego dla użytkownika upakowania tego typu błędów użytkowania

+1

Po prostu dla łatwego odniesienia, aby ludzie mogli zobaczyć odpowiedź zespołową i być może pomóc: https://github.com/angular/angular.js/issues/1974 – basarat

+0

dziękuję za wzmiankę o tym problemie, przepraszam, sam nie odsyłałem linku! – JasonS

Powiązane problemy