AJAX XML数据到$ scope,同步问题

时间:2014-08-16 00:53:21

标签: javascript jquery angularjs

因为我有一些控制器或多或少做同样的事情,我想创建一个函数,它接受XML文件的文件名并将其分配给$scope变量。显而易见的问题是异步调用。

是否有"暂停"或者在AJAX调用完成之前阻止ngXMLFile函数结束的内容,以便它不会undefined$scope.authors分配给data,因为sectionController位于undefined 1}}是$.when

我试过这个function ngXMLFile($http, filename) { $http({method: "GET", url: "/xml/"+filename+".xml"}). success(function(data, status, headers, config) { return $.xml2json(data); }). error(function(data, status, headers, config) { }); } function sectionController($scope, $http) { $.when(ngXMLFile($http, "authors")).then(function(data) { $scope.authors = data; }); } ,但很清楚我没有正确使用它。

<?xml version="1.0" encoding="UTF-8"?>

<authors>
    <author>
        <name>
            <first>Bob</first>
            <last>Smith</last>
        </name>
    </author>
    <author>
        <name>
            <first>Joe</first>
            <last>King</last>
        </name>
    </author>
</authors>

XML文件(authors.xml):

{{1}}

1 个答案:

答案 0 :(得分:1)

你想要的是将回调函数传递给你的Ajax调用函数,例如:

function ngXMLFile($http, filename, callback) {
    $http({method: "GET", url: "/xml/"+filename+".xml"}).
        success(function(data, status, headers, config)
            {
                 callback($.xml2json(data));
            }
        ).
        error(function(data, status, headers, config)
            {
            }
        );
}

function sectionController($scope, $http) {
    ngXMLFile($http, "authors",function(data) {
        $scope.authors = data;
    });
}