Javascript 如何获取url';要在函数中使用的$http.get()的值?

Javascript 如何获取url';要在函数中使用的$http.get()的值?,javascript,angularjs,Javascript,Angularjs,您好,我使用AngularJS解析了三个不同的web服务:以下是我的代码: app.factory('myapp', ['$http', function($http) { function getLists() { var tab = ['url1', 'url2', 'url3']; var list = []; for(i = 0; i < tab.length; i++) { $http.get(tab[i]) .then(function(res

您好,我使用AngularJS解析了三个不同的web服务:以下是我的代码:

app.factory('myapp', ['$http', function($http) {        
function getLists() {
var tab = ['url1', 'url2', 'url3'];
var list = [];
for(i = 0; i < tab.length; i++) {
    $http.get(tab[i]) 
    .then(function(res) {
        res.data.error='';
        list.push(res.data);
    }).catch(function (res) {
res.data.error='file not found';
});
}
return list;
}

return {
getLists: getLists
};
]);
在我的html中:

<tr ng-repeat="d in list"ng-show="d.error != ''">
  <td>{{d.error}}</td></tr>
我得到“未找到未定义的文件”。
有办法解决我的问题吗?

使用响应对象,
res.config.url
包含被命中的url。 但是,由于url不存在,将执行
.catch块
,而不是

$http.get(tab[i]) 
.catch(function(res) {
   res.data = { error : res.config.url +' file not found' };
})

此外,您还必须让调用代码异步使用它,现在您正试图以同步方式访问它,这永远不会起作用…

AngularJS默认是异步的。不能只在方法
getLists()
中返回数组,它永远不会工作。相反,您必须使用回调。解释一下。祝你好运谢谢你@ShadowWizard帮助了我!
alert(tab[i]+' file not found');
$http.get(tab[i]) 
.catch(function(res) {
   res.data = { error : res.config.url +' file not found' };
})