AngularJS: Как изменить $ scope с консоли?

Я могу получить доступ к переменной $scope для принятого ответа здесь. Однако я не могу редактировать его с консоли, т.е. Изменять свойства, функции вызова и т.д. Возможно ли это?

Вот тестовый код, который я экспериментировал с:

<!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>

Если я отредактирую свойство text с помощью консоли, оно изменится, но представление не изменится:

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

Как изменить значения и свойства $scope из консоли, чтобы просмотреть и все зависимости также получить обновления?

Ответы

Ответ 1

Любая переменная области, обновленная из внешнего углового контекста, не будет обновлять ее привязку, вам необходимо запустить цикл дайджест после обновления значений области с использованием scope.$apply(), которая вызовет метод $digest и все привязки будут обновляться по HTML.

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

Примечание. - Вы должны добавить файл jQuery, чтобы он работал.