我需要从本地文件中检索xml数据。
使用这个简单的代码:
angular.module('exampleApp', [])
.controller('ExampleController', function($scope, $http) {
var turniOra = this;
$http.get("/XmlTemp/turni_giorno.xml",
{
transformResponse: function (cnv) {
var x2js = new X2JS();
var aftCnv = x2js.xml_str2json(cnv);
return aftCnv;
}
})
.then(
function(datiConve){
turniOra.prova = datiConve.data.turni.giornata;
}
);
console.log(turniOra.prova); // undefined
});
控制台日志返回“undefined”,但是带有$ timeout指令:
$timeout(function() {
console.log(turniOra.prova);
}, 50);
我有正确的xml数据对象。
为什么会发生这种情况,如何在没有$ timeout的情况下获得相同的结果?
由于
答案 0 :(得分:1)
这很正常。
您的请求是通过AJAX完成的。这似乎是您要求的是异步。
这是什么意思? 您的requets将被发送到服务器,您的脚本将继续执行您的代码,而无需等待服务器的响应。
所以为了你的代码正在这样做:
但是当你超时时,你已经在超时结束前得到了http响应。
您的解决方案是将您的日志添加到此功能中:
function(datiConve){
turniOra.prova = datiConve.data.turni.giornata;
console.log(turniOra.prova);
}
有关角度的更多信息,请查看angular promises
这是$ http使用的