我需要从外部访问(调用和/或修改)控制器的范围。
在this answer之后,我设法访问了作用域,但是数据绑定没有启动...
以这个为例(JSFiddle)。
angular.module("App", []).controller("Test", function($scope)
{
$scope.list = ["added on initialization"];
$scope.add = function(item)
{
$scope.list.push(item);
};
});
var addFromOutside = function()
{
angular
.element(document.getElementById("TestController"))
.scope()
.add('added from outside');
};
<div ng-app="App" ng-controller="Test" id="TestController">
<ul>
<li ng-repeat="item in list track by $index">
{{item}}
</li>
</ul>
<button ng-click="add('added from inside')">Add from inside</button>
</div>
<button onclick="addFromOutside()">Add from outside</button>
如果单击“从内部添加”按钮,则其工作原理与预期的一样。
但是,如果您单击“从外部添加”按钮,则没有任何反应,除非您单击“从内部添加”按钮...
反正有这样做并且数据绑定有效吗?
最佳答案
你忘了加
scope.$apply()
http://jsfiddle.net/o2b0bdbr/
您不在angularjs摘要循环之内,因此您需要让他知道他的示波器上发生了某些情况