如何将两个JSON提要组合到Angular Bootstrap UI typeahead?

时间:2015-04-06 16:57:19

标签: angularjs angular-ui-bootstrap

使用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;
    });
        })}    
});

1 个答案:

答案 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
      }
    })])