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

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

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

这是我正在做的事情:

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);
}

我事先在controller中定义了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);
    });
}