Как использовать область видимости AngularJS. $ Bind - PullRequest
3 голосов
/ 11 июля 2011

У меня есть следующий контроллер, который отлично работает:

function Controller() {}

Controller.prototype = {
    getResult: function(project) {
        var that = this;

        jQuery.ajax({
            async: false,
            url: "/my-service/call?project=" + project,
            dataType: "json",
            success: function(data) { 
                that.result = data;
            }
        });
    }
};

Я хотел бы использовать AngularJS .scope. $ Bind, чтобы посмотреть, смогу ли я удалить 'var that = this;'хак.Но следующее не работает:

function Controller() {}

Controller.prototype = {
    getResult: function(project) {
        angular.scope.$bind(jQuery.ajax({
            async: false,
            url: "/my-service/call?project=" + project,
            dataType: "json",
            success: function(data) { 
                this.result = data;
            }
        }))();
    }
};

Чего мне не хватает?

1 Ответ

2 голосов
/ 12 июля 2011

Миско Хевери на угловую рассылку ответил:

Controller.prototype = {
    getStuff: function(project) {
        jQuery.ajax({
                    async: false,
                    url: "/service/get-stuff",
                    dataType: "json",
                    success: angular.bind(this, function(data) {
                        this.stuff = data;
                    })
                });
    }
};

Он также предложил использовать angular.service. $ Xhr вместо jQuery.ajax.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...