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

Referencing a variable inside a function inside a $scope member function in angularjs

本文关键字:函数 引用 变量 成员 angularjs 中的 scope      更新时间:2023-09-26

这更像是一个通用的javascript闭包和作用域函数,但我将在我遇到它的angular上下文中问它。假设我有以下控制器:

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。信件被更新,然后OnClick被触发。美元的范围。OnClick内部的字母保持原始值。我可以通过将这条线改为console.log(this.Letter);来解决这个问题。但是,我不能在SomethingWithCallBack()中的匿名函数中这样做。在这里,我目前通过分配一个变量this.Letter的值来解决这个问题,如下所示。

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

是否有一些方法可以在回调中引用"外部this",所以我不必分配变量?

这是一个经典的问题当你写javascript

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

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