外部js函数的AngularJS访问范围是什么?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

我正在尝试通过外部javascript函数来访问控制器的内部作用域的简单方法。

我在这里看到了另外几个问题

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

将从DOM元素中检索范围,但我的尝试目前没有产生适当的结果:http://jsfiddle.net/sXkjc/5/。

我目前正在经历从简单的JS到角度的转变。我试图做到这一点的主要原因是尽可能地保持我的原始库代码完整;省去了我将每个函数添加到控制器中的需要。

我有什么办法来实现这个目标吗?

提问于
用户回答回答于

你需要用$Scope$Apply(),比如jQuery/javascript事件处理程序。

function change() {
    alert("a");
    var scope = angular.element($("#outer")).scope();
    scope.$apply(function(){
        scope.msg = 'Superhero';
    })
}
用户回答回答于

下面是我在过去几个月中遇到的另一个解决方案:

$scope.safeApply = function( fn ) {
    var phase = this.$root.$$phase;
    if(phase == '$apply' || phase == '$digest') {
        if(fn) {
            fn();
        }
    } else {
        this.$apply(fn);
    }
};

例子:

function change() {
    alert("a");
    var scope = angular.element($("#outer")).scope();
    scope.safeApply(function(){
        scope.msg = 'Superhero';
    })
}

演示:http://jsfiddle.net/sXkjc/227/

扫码关注云+社区