我可以根据接受的答案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
值和属性,以便视图和所有依赖项也获得更新?
答案 0 :(得分:12)
从外部角度上下文更新的任何范围变量都不会更新它的绑定。您需要在使用scope.$apply()
更新范围值后运行digest cycle,这将调用$digest
方法并且所有绑定将在HTML上更新。
angular.element($("#container")).scope().text
angular.element($("#container")).scope().$apply()
注意: - 您应该添加jQuery文件以使其正常工作。