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

时间:2015-07-14 16:20:22

标签: javascript arrays angularjs jsonp

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

这是我正在做的事情:

D

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

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

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

this.testlist = [];

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

Array [ Object, Object ]

如何将返回的对象保留在数组中?

提前致谢,
弗兰克

1 个答案:

答案 0 :(得分:1)

这是一个范围问题。尝试将外部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);
    });
}