Angular Promises和forEach

时间:2015-09-23 12:00:18

标签: javascript angularjs

我现在已经使用角度几个星期了,只是为了构建个人应用程序,并尝试了解它,到目前为止我认为好,尽管我最近遇到了承诺问题。

我想要实现的目标如下:   - 拨打api以检索国家/地区列表   - 一旦我有该列表,就为每个国家/地区执行新呼叫以获取该国家/地区的图像   - 然后,使用Country,Capital,Region和Image填充我的$ scope元素,并将信息呈现到页面

我的代码在本地工作正常,但是当部署到heroku时,它似乎不适用于谷歌浏览器....出于某种原因,它确实适用于任何其他浏览器和移动设备,即使在新的Chrome Incognito窗口上......但是在普通的Chrome浏览器上,我得到了所有图像的404 ...我的代码中有什么问题吗?

到目前为止,我还没有使用工厂,所以我的逻辑都是控制器,我知道它不理想;)

非常感谢你的帮助!

如果您需要,here是实时链接

angular.module('angularCountriesApp')
  .controller('IndexCtrl', ['$scope', '$http', function ($scope, $http) {

    function getCountries() {
      return $http.get("https://restcountries.eu/rest/v1/all", { cache: true});
    }

    function getImages(country){
      return $http.get("https://api.500px.com/v1/photos/search?term="+  country+"&tag=landscape&image_size=4&rpp=1&consumer_key=XXXX", { cache: true});
    }


    var coutriesPromise = getCountries();

    coutriesPromise.then(function(countries) {
      var countriesList = [];
      // console.log(countries);
      angular.forEach(countries.data, function(country){

        var name    = country.name;
        var capital = country.capital;
        var region  = country.region;

        var imagesPromise = getImages(country.name);

        imagesPromise.then(function(images){


          var image = images.data.photos[0].image_url;
          countriesList.push({
            'name' : name,
            'capital' : capital,
            'region' : region,
            'image' : image
          });

          $scope.countries = countriesList;

        });
      })

    }, function(reason) {
      console.log(reason);
    });

  }]);

1 个答案:

答案 0 :(得分:0)

所以我想通了......我有一个镀铬扩展程序阻止图像加载.......尽管如此,如果你有更好的代码方法,请说出来!