使用Angular和Angular UI Bootstrap我需要将来自2个feed的结果合并到一个typeahead下拉列表中。我会将Google的结果JSON Feed与我的应用程序的结果合并为一组Typeahead下拉结果。
这可以将两个Feed组合在一个承诺中吗?我尝试过使用$ q方法,但我似乎无法使用它。这是我到目前为止所尝试的。不工作的JS小提琴在这里:
http://jsfiddle.net/rfnegz60/1/
HTML
<div ng-app="dr" ng-controller="testCtrl">
<input type="text" ng-model="asyncSelected" placeholder="Locations loaded via $http" typeahead="address for address in getCombinedLocations($viewValue)" typeahead-loading="loadingLocations" class="form-control">
<i ng-show="loadingLocations" class="glyphicon glyphicon-refresh"></i>
</div>
的JavaScript
var app = angular.module('dr', ['ui.bootstrap']);
app.controller("testCtrl", function ($scope, $http, $q) {
$scope.selected = undefined;
$scope.getCombinedLocations = function(val) { $q.all(['http://maps.googleapis.com/maps/api/geocode/json','http://maps.googleapis.com/maps/api/geocode/json']).then(function(results){
// return results;
$scope.combined = [];
angular.forEach(results, function(result){
$scope.combined.push(result.data);
return $scope.combined;
});
})}
});
答案 0 :(得分:0)
您应该不只是将一个URL,而是一个完整的$http.get
请求传递给Promise。请在此处查看更新的小提琴:http://jsfiddle.net/rfnegz60/3/
$q.all([$http.get('http://maps.googleapis.com/maps/api/geocode/json', {
params: {
address: val,
sensor: false
}
}),$http.get('http://maps.googleapis.com/maps/api/geocode/json', {
params: {
address: val,
sensor: false
}
})])