我正在尝试看看是否有一种简单的方法可以通过外部javascript函数访问控制器的内部作用域(与目标控制器完全无关)。
我在这里看到了其他几个问题,
angular.element("#scope").scope();
将从DOM元素检索作用域,但是我的尝试当前没有产生适当的结果。
这是jsfiddle:http://jsfiddle.net/sXkjc/5/
我目前正在经历从普通JS到Angular的过渡。我试图做到这一点的主要原因是尽可能保持我的原始库代码的完整性;省去了我向控制器添加每个函数的需要。
关于如何实现这一点,你有什么想法吗?对上述小提琴的评论也很受欢迎。
发布于 2013-03-15 12:54:24
如果你想在angularjs的控制之外对某个作用域值进行任何更改,比如jquery/javascript事件处理器,你需要使用$scope.$apply()。
function change() {
alert("a");
var scope = angular.element($("#outer")).scope();
scope.$apply(function(){
scope.msg = 'Superhero';
})
}
演示:Fiddle
发布于 2013-09-12 15:52:01
我们可以在加载后调用它
http://jsfiddle.net/gentletech/s3qtv/3/
<div id="wrap" ng-controller="Ctrl">
{{message}}<br>
{{info}}
</div>
<a onClick="hi()">click me </a>
function Ctrl($scope) {
$scope.message = "hi robi";
$scope.updateMessage = function(_s){
$scope.message = _s;
};
}
function hi(){
var scope = angular.element(document.getElementById("wrap")).scope();
scope.$apply(function() {
scope.info = "nami";
scope.updateMessage("i am new fans like nami");
});
}
发布于 2014-07-28 15:10:28
我已经很久没有问过这个问题了,但这里有一个不需要jquery的答案:
function change() {
var scope = angular.element(document.querySelector('#outside')).scope();
scope.$apply(function(){
scope.msg = 'Superhero';
})
}
https://stackoverflow.com/questions/15424910
复制相似问题