2015-11-13 7 views
15

Bevor ich das Problem behob, hatte ich ein Element (in einer HTML-Vorlage) mit einem ng-Klick, der eine nicht existierende Funktion aufruft.Debugging: NG-Klick und nicht vorhandene Funktionen

Gibt es eine Möglichkeit, einen strikten Modus zu aktivieren (wie in JS strict verwenden) oder etwas ähnliches, um diese Art von Problemen in der Konsole zu sehen?

UPDATE: Ich habe auch versucht mit $ compileProvider.debugInfoEnabled (true) ohne Erfolg

+2

Werfen Sie einen Blick auf https://stackoverflow.com/questions/29155171/expose-javascript-errors-in-angular-js –

+0

Können Sie den Quellcode hinzufügen? – Krishan

+0

@ Kristján: netter Link. Ich denke, dass es keine Möglichkeit gibt, diese Fehler zu erfassen, ohne angular.js zu ändern ... – Mat

Antwort

8

Kurze Antwort: Es gibt keine Möglichkeit dies in Vanille AngularJS zu tun, kann aber mit einem Hack durchgeführt werden.

Lange Antwort: Die Ausdrücke, die Sie in DOM-Ereignisse verwenden Umgang mit Richtlinien (wie ng Klick ng-keydown und ng einreichen) durch Schräg die $parse Service zusammengestellt. Sie können sehen, wo dies innerhalb der code for the event directive geschieht. Der $ parse-Dienst enthält eine eigene Implementierung eines Lexers und Parsers, die den Ausdruck in JavaScript kompilieren.

Das generierte JavaScript verfügt über eine Reihe von Sicherheitsüberprüfungen, um zu verhindern, dass Dinge passieren, wie z. B. Fehler durch nicht definierte Funktionen. Eine Schaltfläche mit diesem Code:

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

Wird bis zu erzeugen JavaScript für die Event-Handler beenden, die etwas ähnliches wie dies tut:

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

Es ist trivial Eckige zu modifizieren diese Prüfung zu entfernen. Ich habe eine small patch gemacht, die die obige "if" -Klausel aus dem generierten JavaScript entfernt und deshalb Fehler verursacht, wenn Sie versuchen, eine undefinierte Funktion zu verwenden.

+0

Gute Antwort Jason – Mat

Verwandte Themen