AngularJS:如何从控制台编辑$ scope?

时间:2015-06-09 15:39:26

标签: javascript angularjs angular-digest

我可以根据接受的答案here访问$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 个答案:

答案 0 :(得分:12)

从外部角度上下文更新的任何范围变量都不会更新它的绑定。您需要在使用scope.$apply()更新范围值后运行digest cycle,这将调用$digest方法并且所有绑定将在HTML上更新。

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

注意: - 您应该添加jQuery文件以使其正常工作。