“this"变量在将JSONP数组分配给AngularJS控制器时不起作用

"this" variable not working when assigning JSONP array to AngularJS controller

本文关键字:分配 数组 AngularJS 控制器 不起作用 JSONP this quot 变量      更新时间:2023-09-26

我有一个REST服务,我通过JSONP在我的angular控制器中调用。我想把返回的数组保存为一个变量。

下面是我正在做的:

this.testTheRest = function()
{
    $http.jsonp('myRESTService', {
            params: {
                callback: 'JSON_CALLBACK',
                format: 'json'
            }
        })
            .success(function (data) {
                this.testlist = data.NoParamsResult;
                console.log(this.testlist);
            })
            .error(function (data) {
                alert(data);
            });
        console.log(this.testlist);
}

我已经将testlist定义为控制器中的变量:

this.testlist = [];

注意两个控制台输出调用。问题是,第一个显示的是正确的数组:

Array [ Object, Object ]

但第二个显示的是一个空数组(可能是初始化时的那个):

Array [  ]

我该怎么做才能将返回的对象保留在数组中?

提前感谢,
弗兰克。

这是一个范围问题。尝试将外部this分配给另一个变量(例如that),然后使用该变量而不是this

var that = this
that.testTheRest = function() {
    $http.jsonp('myRESTService', {
        params: {
            callback: 'JSON_CALLBACK',
            format: 'json'
        }
    })
    .success(function (data) {
        that.testlist = data.NoParamsResult;
        console.log(that.testlist);
    })
    .error(function (data) {
        alert(data);
    });
}