首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >来自外部的AngularJS访问作用域js函数

来自外部的AngularJS访问作用域js函数
EN

Stack Overflow用户
提问于 2013-03-15 12:43:39
回答 8查看 177.1K关注 0票数 136

我正在尝试看看是否有一种简单的方法可以通过外部javascript函数访问控制器的内部作用域(与目标控制器完全无关)。

我在这里看到了其他几个问题,

angular.element("#scope").scope();

将从DOM元素检索作用域,但是我的尝试当前没有产生适当的结果。

这是jsfiddle:http://jsfiddle.net/sXkjc/5/

我目前正在经历从普通JS到Angular的过渡。我试图做到这一点的主要原因是尽可能保持我的原始库代码的完整性;省去了我向控制器添加每个函数的需要。

关于如何实现这一点,你有什么想法吗?对上述小提琴的评论也很受欢迎。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-03-15 12:54:24

如果你想在angularjs的控制之外对某个作用域值进行任何更改,比如jquery/javascript事件处理器,你需要使用$scope.$apply()

代码语言:javascript
复制
function change() {
    alert("a");
    var scope = angular.element($("#outer")).scope();
    scope.$apply(function(){
        scope.msg = 'Superhero';
    })
}

演示:Fiddle

票数 230
EN

Stack Overflow用户

发布于 2013-09-12 15:52:01

我们可以在加载后调用它

http://jsfiddle.net/gentletech/s3qtv/3/

代码语言:javascript
复制
<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");
    });
}
票数 13
EN

Stack Overflow用户

发布于 2014-07-28 15:10:28

我已经很久没有问过这个问题了,但这里有一个不需要jquery的答案:

代码语言:javascript
复制
function change() {
    var scope = angular.element(document.querySelector('#outside')).scope();
    scope.$apply(function(){
        scope.msg = 'Superhero';
    })
}
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15424910

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档