lukas293
lukas293

Reputation: 558

Access controller property from another Class in AngularJS

today I discovered the following problem while using AngularJS.

My Code is as follows:

app.controller("SomeController", function(){

            this.foo = true

            this.changeFoo = function(bool){

                this.foo = bool
            }

            api.check(function(response){
                this.changeFoo(response.bar)
            })
        })

(by the way: response & response.bar are not undefined)

api is an instance of my class API, defined outside of my Angular-code.

The problem is, that I can not change this.foo inside my callback-function.

What can I do to access this.foo?

Edit:

I tried to pass this as an argument, the result is the same

api.check(this, function(scope, response){

                scope.foo = response.bar
            })

scope seems to be defined inside this function, but the changes doesn't effect anything

Upvotes: 0

Views: 378

Answers (1)

Binvention
Binvention

Reputation: 1077

You need to assign this to a different variable in your angular code before your Api call. Then use that variable to access your this variable. Like this

app.controller("SomeController", ['$scope',function($scope){

        this.foo = true;

        this.changeFoo = function(bool){

            this.foo = bool;
            $scope.$apply();
        };
        Var controller=this;

        api.check(function(response){
            controller.changeFoo(response.bar);
        });
    }]);

Upvotes: 1

Related Questions