Suche…


Grundlegendes Debugging in Markup

Umfangstest und Ausgabe des Modells

<div ng-app="demoApp" ng-controller="mainController as ctrl">
    {{$id}}
    <ul>
        <li ng-repeat="item in ctrl.items">
            {{$id}}<br/>
            {{item.text}}
        </li>
    </ul>
    {{$id}}
    <pre>
       {{ctrl.items | json : 2}}
    </pre>
</div>


angular.module('demoApp', [])
.controller('mainController', MainController);

function MainController() {
    var vm = this;
    vm.items = [{
        id: 0,
        text: 'first'
    },
    {
        id: 1,
        text: 'second'
    },
    {
        id: 2,
        text: 'third'
    }];
}

Manchmal kann es hilfreich sein zu sehen, ob es einen neuen Spielraum gibt, um Probleme mit dem Umfang zu beheben. $scope.$id kann überall in Ihrem Markup in einem Ausdruck verwendet werden, um festzustellen, ob es einen neuen $ scope gibt.

Im Beispiel sehen Sie, dass sich außerhalb des ul-Tags derselbe Gültigkeitsbereich ($ id = 2) befindet, und innerhalb der ng-repeat gibt es für jede Iteration neue untergeordnete Gültigkeitsbereiche.

Eine Ausgabe des Modells in einem Pre-Tag ist hilfreich, um die aktuellen Daten Ihres Modells anzuzeigen. Der json Filter erzeugt eine gut aussehende formatierte Ausgabe. Das Pre-Tag wird verwendet, da innerhalb dieses Tags alle neuen Zeilen \n korrekt angezeigt werden.

Demo

Mit ng-inspect Chromverlängerung

ng-inspect ist eine leichte Chrome-Erweiterung zum Debuggen von AngularJS-Anwendungen.

Wenn ein Knoten im Elementbereich ausgewählt wird, werden die Informationen zum Bereich im Bereich ng-inspect angezeigt.

Geben Sie hier die Bildbeschreibung ein

Stellt einige globale Variablen für den schnellen Zugriff auf scope/isolateScope .

$s      -- scope of the selected node
$is     -- isolateScope of the selected node
$el     -- jQuery element reference of the selected node (requiers jQuery)
$events -- events present on the selected node (requires jQuery)

Geben Sie hier die Bildbeschreibung ein

Bietet einfachen Zugriff auf Services / Factories.

Verwenden Sie $get() , um die Instanz eines Service / Factory nach Namen abzurufen.

Geben Sie hier die Bildbeschreibung ein

Die Leistung der Anwendung kann überwacht werden, indem die Anzahl der Bereiche, IsolateScopes, Beobachter und Listener in der Anwendung gezählt wird.

Verwenden Sie $count() , um die Anzahl der Bereiche, isolateScopes, Beobachter und Zuhörer zu ermitteln.

Geben Sie hier die Bildbeschreibung ein

Hinweis: Diese Erweiterung funktioniert nur, wenn DebugInfo aktiviert ist.

Download ng-inspizieren hier

Den Umfang des Elements erhalten

In einer Winkel-App geht alles um den Umfang. Wenn wir einen Element-Bereich erhalten könnten, ist es einfach, die Winkel-App zu debuggen. So greifen Sie auf den Umfang des Elements zu:

angular.element(myDomElement).scope();
e.g.
angular.element(document.getElementById('yourElementId')).scope()  //accessing by ID

Den Umfang des Controllers erhalten: -

 angular.element('[ng-controller=ctrl]').scope()

Eine andere einfache Möglichkeit, auf ein DOM-Element über die Konsole zuzugreifen (wie von jm erwähnt), ist das Klicken auf das Register "Elemente". Es wird automatisch als $ 0 gespeichert.

angular.element($0).scope();


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow