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, чтобы он работал.