AngularJS:如何在$ http.get中的成功调用之外传递数据

时间:2015-11-29 10:13:37

标签: angularjs json service get

在Angular中,我使用json文件(在我的代码:file4.json中)调用$ http.get来检索数据。 在成功调用中,数据被传递到数组'bmlService.items'。 console.log显示事情进展顺利。 但是,此数组在$ http.get函数外部为空。 如何在此功能之外传递数据?

这是我的代码:

app.service('bmlService', function($http){
var bmlService = {};

bmlService.items = [];

    $http.get("file4.json")

        .success(function(data){
            bmlService.items = data;

            console.log("inside succes call: ", bmlService.items);
            })

        .error(function(data, status){
            alert("Something went wrong...");
        });

        console.log("outside http.get: ", bmlService.items);

return bmlService;

});

1 个答案:

答案 0 :(得分:0)

  

但是,这个数组在$ http.get函数之外是空的。如何在此功能之外传递数据?

你不能因为AJAX调用是异步的,并且这个数据只有在回调执行后才可用 - 这可能在触发AJAX调用后的更晚阶段发生。因此,如果您想将其传递到外部,您可以调用其他函数并将数据作为参数传递给此函数:

.success(function(data) {
    bmlService.passData(data);
})

所以基本上你必须重新设计你的代码来处理回调而不是一些顺序调用和一个接一个地分配的变量:

var bmlService = {
    passData: function(data) {
        // do something with the data here
    }
};