在Angular控制器内关闭

时间:2015-08-17 11:47:05

标签: javascript angularjs

我正在学习AngularJS,我想知道为什么控制器内部的函数不能作为clojure工作。这是关闭如何工作的典型例子

var inner;

var outer = function(x) {
    inner = function() {
        console.log(x);
    }
}

outer(3);

inner();

所以,我希望这段代码的行为类似

angular.module('MyModule')
.value('x', 3)
.controller('MyCtrl', function($scope, x) {
        $scope.showMeX = function() {
           alert(x);
        }
    }
});

然而,注入变量' x'无法从“showMeX”内部访问。功能。为什么不?

我可以猜测Angular提供了对$ scope对象的访问,只是为了避免弄乱$ scope外部的某些对象,并且该逻辑的这些对象应该是“不可见的”。不过,目前我还不明白这是如何运作的。

有什么想法?链接到一些澄清的东西,阅读将是完美的。

1 个答案:

答案 0 :(得分:0)

这可能是一种错觉。为此制作了JavaScript闭包,使用您在上面发布的代码,ReferenceError永远不会获得x。这并不意味着x不能undefined