从角度工厂返回数据,返回对象后填充数据
Returning data from an angular factory, data is populated after object is returned
我的Angular工厂遇到了一些麻烦。它正确地返回数据但在chrome控制台中,当我尝试记录它时,它最初是空的,chrome在我的对象object value at left was snapshotted when logged
旁边显示一条消息。当我展开我的对象时,一切都在那里。如果我试图循环遍历返回的数据,我会得到一个未定义的错误。
我很确定这是一个有希望的领域,但我不确定我会怎么做。我只想能够在我的控制器中循环处理从这个工厂返回的数据。我的代码如下,任何见解都将不胜感激。
angular.module('myMap').factory('mapSorter', function($http) {
x2js = new X2JS(),
data = {
styles: [],
layers: []
};
return {
//pass in array of objects with url property
processMapData : function(kmls) {
//loop through each object
angular.forEach(kmls, function(kml) {
$http.get(kml.url).then(function(response) {
//push properties from response into data object
data.styles = data.styles.concat(x2js.xml_str2json(response.data).kml.Document.Style)
data.layers.push(x2js.xml_str2json(response.data).kml.Document.Placemark)
})
})
return(data);
}
}
});
谢谢!
我会考虑看看$q.all
。它接受一系列承诺,一旦所有承诺都得到解决,它就会解决。你可以做这样的事情:
$q.all([promise1, promise2, promise3]).then(function(values){
console.log(values[0]) // promise1 value
console.log(values[1]) // promise2 value
console.log(values[2]) // promise3 value
});
您所要做的就是将每个promise推送到一个数组中,然后返回$q.all(array)
。然后,您就可以在控制器内调用then
并获得所有响应。
希望这能帮助
相关文章:
- JSON数组数据返回Undefined
- AngularJS中的页面之间共享数据返回空
- post()向服务器动态生成的数据返回空响应
- 如何从jQuery对象文本正确调用服务器端ASP.NET并将数据返回给jQuery
- d3从mysql数据库导入数据返回“0”;未定义”;
- JSON可以't访问数据返回未定义
- 让 ajax 数据返回到调用函数 - 需要澄清之前的答案
- ajax 调用 PHP 数据返回 VM92:1 未捕获语法错误:意外的标记 {.
- Jquery ajax 请求无法将数据返回给其他函数
- 在 jquery 中将数据返回给 ajax 调用
- Meteor.methods:从内部回调将数据返回给客户端
- 将PHP数据返回到我当前的网页,供Javascript访问
- ajax 调用如何将数据返回给变量
- 将数据返回到索引.js节点表达式
- j查询帖子数据返回比较不起作用
- 节点 API 未将数据返回给客户端 ajax 请求
- jQuery 函数在 AJAX 数据返回上不起作用
- AJAX 将数据返回给 jquery
- 中继:获取递归数据返回空值
- 根据chrome.storage中的数据返回chrome.webRequest.onBeforeRequest的值