因为我有一些控制器或多或少做同样的事情,我想创建一个函数,它接受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}}
答案 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;
});
}