[英]$http.get from 2 jsons Angular
我尝试从2个json获取数据:
第一个'names.json':
[
{
"name": "AAAAAA",
"down": "False"
},
{
"name": "BBBBBB",
"down": "45%"
},
{
"name": "CCCCC",
"down": "12%"
}
]
第二个'data.json'
[
{
"data": "25-12-2014"
}
]
Javascript:
app.service('service', function($http){
this.getNames = function () {
var data = $http.get('data,json', { cache: false});
var names = $http.get('names.json', { cache: false});
return names;
return data;
};
});
app.controller('FirstCtrl', function($scope, service) {
var promise = service.getNames();
promise.then(function (data) {
$scope.datas = data.data;
console.log($scope.datas);
});
})
的HTML
div ng-controller="FirstCtrl"
<table>
<tbody>
<tr ng-repeat="name in datas">
<td>{{name.name}}</td>
<td>{{name.data}}</td>
</tr>
</tbody>
</table>
</div>
在我的console.log和表中,我只看到json“ names.json”中的数据,但我也想看到来自“ data.json”中的数据。
您应该一起返回两个诺言,在一个函数中不能有两个返回。 在这种情况下, $q.all
会有所帮助。
码
//inject $q in service function
this.getNames = function () {
var data = $http.get('data,json', { cache: false});
var names = $http.get('names.json', { cache: false});
return $q.all([data, names]);
};
控制者
var promise = service.getNames();
promise.then(function (data) {
$scope.datas = data[0].data;
$scope.names = data[1].data;
});
将您的代码更改为此
app.service('service', function($http) {
return{
getData : function(){
return $http.get('data,json', { cache: false });
},
getNames : function(){
return $http.get('names.json', { cache: false });
}
}
});
app.controller('FirstCtrl', function($scope, service, $q) {
$q.all([service.getData(), service.getNames()]).then(function(response){
$scope.data = response[0].data;
$scope.names = response[1].data:
});
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.