2015-06-09 11 views
12

Ich bin in der Lage, auf die $scope Variable nach der angenommenen Antwort here zuzugreifen. Ich kann es jedoch nicht von der Konsole aus bearbeiten, z. B. Eigenschaften ändern, Anruffunktionen usw. Ist das überhaupt möglich?

Hier ist ein Test Code, den ich mit experimentiert habe:

<!doctype html> 
<html data-ng-app="Foo"> 
    <head> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script> 
    <script type="text/javascript"> 
     var app = angular.module("Foo", []); 
     app.controller("One", ["$scope", function($scope) { 
     $scope.text = "hello"; 
     }]); 
    </script> 
    </head> 
    <body> 
    <div id="container" ng-controller="One"> 
     {{ text }} 
    </div><!-- #container --> 
    </body> 
</html> 

Wenn ich die text Eigenschaft mit der Konsole bearbeiten, es ändert sich, aber die Aussicht ändert sich nicht:

> angular.element($("#container")).scope().text 
< "hello" 
> angular.element($("#container")).scope().text = 'bye' 
< "bye" 

Wie ändere ich die $scope Werte und Eigenschaften von der Konsole, so dass die Ansicht und alle Abhängigkeiten auch Updates erhalten?

+0

Dies ist kein Duplikat Frage (hat nur einen schlechten Titel) –

+0

http://stackoverflow.com/questions/15663412/how-to-access-scope-variable-in-angular-from-chrome-console – PSL

+0

@DavidGrinberg Verknüpfte Frage beantwortet, was OP verlangt. Tatsächlich habe ich auch mehr von ihnen gefunden. – PSL

Antwort

12

Jeder Umfang variabel von außen Winkel Kontext aktualisiert werden wird es nicht aktualisiert werden verbindlich, müssen Sie digest cycle nachlaufen Werte des Bereichs Aktualisierung mit scope.$apply() die $digest Methode und alle Bindungen auf HTML aktualisiert nennen.

angular.element($("#container")).scope().text 
angular.element($("#container")).scope().$apply() 

Hinweis: - Sie sollten jQuery-Datei hinzufügen, um es zu machen, arbeiten.

+1

Das ist eigentlich falsch. OP verwendet nicht einmal jquery (basierend auf dem angezeigten Code) – PSL

+0

@ downvoter bitte Kommentar hinterlassen .. was ist falsch mit meiner Antwort? –

+1

. $ Apply wird funktionieren, aber ich weiß nicht, wie das Snippet ausgeführt wird, wenn keine jquery geladen ist. Aber seltsam genug OP zeigt wahrscheinlich nicht vollständigen Code und scheint wie op selbst tut es .. Also ich denke, ich kann den Zweifel geben !! Mine entfernt ... – PSL