您好我使用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页面中,我必须显示在Json文件中找到的数据
<tr ng-repeat="d in list" ng-show="d.error == ''">
<td>{{d.nm}}</td>
<td>{{d.cty}}</td>
<td>{{d.hse}}</td>
<td>{{d.yrs}}</td>
</tr>
<tr ng-repeat="d in list"ng-show="d.error != ''">
<td>File not found</td></tr>
因此,如果找不到URL或出现错误,我应该显示一条错误的行。 我现在想要的是tp指定未找到的Url。例如,如果找不到url1,我想要添加一条消息url1 +&#34;找不到&#34; 我试着在我的工厂里这样做
res.data.error= tab[i]+' file not found';
并在我的HTML中:
<tr ng-repeat="d in list"ng-show="d.error != ''">
<td>{{d.error}}</td></tr>
但没有出现,当我使用警报调试时
alert(tab[i]+' file not found');
我找不到未定义的文件&#39;。 有办法解决我的问题吗?
答案 0 :(得分:1)
使用响应对象,res.config.url
包含被击中的网址。
但是,由于网址不存在,.catch block
将被执行,而不是.then block
$http.get(tab[i])
.catch(function(res) {
res.data = { error : res.config.url +' file not found' };
})
另外,你必须让调用代码异步使用它,现在你试图以同步的方式访问它,这将永远不会工作......