在angularjs中引用$ scope成员函数内的函数内部的变量

时间:2014-06-12 14:01:42

标签: javascript angularjs closures

这更像是一般的javascript闭包和范围函数,但我会在遇到它的角度上下文中询问它。假设我有以下控制器:

var Controller = function ($scope, factory) {
        $scope.Letter = 'A';

        /*
            Some other code
            .
            .
            . 
        */

        $scope.OnClick = function() {
            console.log($scope.Letter);
            SomethingWithCallBack('a param', 34, function() {
                console.log($scope.Letter);
            });
        }
};

假设在更新$ scope.Letter的地方发生了某些事情,然后触发OnClick。 OnClick中的$ scope.Letter保留原始值。我可以通过将行更改为console.log(this.Letter);来解决此问题。但是,我不能在SomethingWithCallBack()中的匿名函数内执行此操作。我目前通过为this.Letter赋值变量来解决问题,如下所示。

var myLetter = this.letter;
SomethingWithCallBack('a param', 34, function() {
    console.log(myLetter);
});

是否有某种方法可以引用"外部这个"在回调中,所以我不必分配变量?

1 个答案:

答案 0 :(得分:1)

当您编写javascript

时,这是一个经典问题

您需要做的就是在附加事件侦听器之前将其存储在另一个变量中。

var that = this;
SomethingWithCallBack('a param', 34, function() {
    console.log(that.myLetter);
});