code

변수는 angular.에서 접근할 수 없습니다. 각각에 대해

starcafe 2023. 11. 4. 13:11
반응형

변수는 angular.에서 접근할 수 없습니다. 각각에 대해

서비스가 있습니다.

app.service('myService', function() {
    this.list = [];
    this.execute = function() {
        //this.list is reachable here
        angular.forEach(AnArrayHere, function(val, key) {
           //this.list is not reachable here
        });
    }
}

컨트롤러에서도 접근이 가능합니다.

function Ctrl($scope, myService) {
    $scope.list = myService.list;
}

누가 각도 내에서 "this.list"에 연결할 수 없는 이유를 설명해 줄 수 있습니까?각각에 대해 그리고 "this.list"에 어떻게 액세스할 수 있습니까?

의 마지막 매개 변수입니다.angular.forEach(http://docs.angularjs.org/api/angular.forEach) 기능은 다음과 같은 맥락은 다음과 같습니다.this. 그래서 당신은 이런 것을 원할 것입니다.

app.service('myService', function() {

    this.list = [];

    this.execute = function() {

        //this.list is reachable here

        angular.forEach(AnArrayHere, function(val, key) {
           //access this.list
        }, this);

    }
}

이유this.list함수 호출의 컨텍스트가 변경되었기 때문에 foreach에서 액세스할 수 없습니다.그것은 내부에서 작동합니다.execute메서드는 목록과 같은 컨텍스트의 일부입니다.

모든 폐쇄로 인해 나는 다음을 배정할 것입니다.this나중에 호출할 수 있는 다른 변수의 컨텍스트입니다.이와 같은 것:

app.service('myService', function() {

    var self = this;
    self.list = [];

    self.execute = function() {
        //this.list and self.list are reachable here
        angular.forEach(AnArrayHere, function(val, key) {
           //self.this == this.list
        });
    }
}

이는 각 메서드 호출의 일부로 컨텍스트를 전달하는 것보다 약간 더 일반적인 솔루션이며 다른 종결 관련 상황에서 작동합니다.

언급URL : https://stackoverflow.com/questions/15013016/variable-is-not-accessible-in-angular-foreach

반응형