2016-06-13 39 views
0

我的应用程序中有一个问题。我有很多结果,但都是空的。在我的第一个console.log($scope.favoris)我有2个对象,在我的第二个console.log($scope.favoris)我没有定义。
(对不起,我的英语)
感谢在foreach中的角函数

.controller('ProfilCtrl', function ($scope, $http) { 
 
     var getfav = localStorage.getItem("favorites"); 
 
     var getfavo = JSON.parse(getfav); 
 
     var test = getfavo.length; 
 

 
     var log = []; 
 
     $scope.favori = []; 
 

 
     angular.forEach(getfavo, function (value, key) { 
 

 

 
      $http.post("http://api.exemple.fr/getFavoris.php?favoris=" + value).then(function (res, data) { 
 
        data = res.data; 
 
        $scope.favori.push(data); 
 
        // on dit que $scope.programs est egale au tableau program 
 
        $scope.favoris = $scope.favori; 
 
        console.log($scope.favoris); 
 
        return $scope.favoris; 
 
       }); 
 
      console.log($scope.favoris); 
 
     }); 
 
    });
<ion-view view-title="Profil"> 
 
    <ion-content> 
 

 
     <!--<div ng-repeat="favo in favoris">--> 
 
     <span class="info-ingredient-title">Recettes que vous aimez</span> 
 
     <div ng-repeat="favo in favoris"> 
 
       <a href="#/info/{{ favo.id }}"> 
 
        <div class="item-category"> 
 
         <div class="item-color-effect"> 
 
          <span class="item-calorie">{{ favo.calorie }}</span> 
 
          <span class="item-kcal">kcal</span> 
 
         </div> 
 
         <div class="item-black-effect"> 
 
          <span class="item-title">{{ favo.title }}</span> 
 
         </div> 
 
         <img class="item-img" src="{{ favo.img }}"> 
 
        </div> 
 
       </a> 
 
      </div> 
 
     <!--</div>--> 
 

 
    </ion-content> 
 
</ion-view>

+0

这不会按照您期望的方式工作,因为'http.post'是异步的。它被排队,然后在'post'返回之前调用下一行'console.log($ scope.favoris)',所以它还没有任何数据。 '$ http'虽然知道角度,并且会在'.then'完成后自动发布'$ digest'来更新数据绑定。 – Claies

+0

如果你发给我你的JSON响应,可以解决你的问题 –

回答

0

其次控制台是POST方法之外。由于angularjs执行异步http调用,它不会等待http调用的结果,并会移动到下一行代码,在您的情况下是console.log($ scope.favoris)。

希望它能澄清

+0

我认为,但我不知道它是如何工作的 – Hanteed