【发布时间】:2015-11-10 01:00:51
【问题描述】:
伙计们。
我正在学习 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);
}
}
});
然而,无法从“showMeX”函数内部访问注入的变量“x”。为什么不?
我可以猜测 Angular 提供对 $scope 对象的访问只是为了避免弄乱 $scope 外部的某些对象,并且按照该逻辑,此类对象应该是“不可见的”。不过,目前我不明白这是如何工作的。
有什么想法吗?链接到一些要阅读的澄清内容将是完美的。
【问题讨论】:
-
似乎工作正常jsfiddle.net/ab537s7v。你有错误吗?
-
哦,我的错,我从我的代码中复制粘贴它而没有尝试小提琴。感谢您的回复,这确实有效,一切都按预期进行。我现在应该删除我的问题吗,保留它是没有意义的,对吧?
-
好吧,你可以发布一个答案来解释发生了什么,只要你最后做对了,犯一些错误是可以的。 :)
标签: javascript angularjs