13

我可以根据此处$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从控制台更改值和属性,以便视图和所有依赖项也得到更新?

4

1 回答 1

14

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

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

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

于 2015-06-09T15:41:35.577 回答