AngularJS:NG-重复显示数据不正确

问题描述:

我刚学使用JavaScript,AngularJS,并解析,所以请,如果我不当做任何事情,这么说。我想尽可能地学习。AngularJS:NG-重复显示数据不正确

我有一个任务,我被指示使用Parse和AngularJS。我想在我的companies对象中显示每个company,然后显示每个对象的评分。在解析中,这些被存储为具有关系的两个单独的对象。

我终于能够得到的收视率来计算,但是角被重写的收视率数据。它显示计算出的最后评分,而不是每个评分。 console.log(total)正在控制台中生成准确的数字。

这里是我的控制器内的代码检索companies

function getCompanies() { 
    new Parse.Query(Companies).find({ 
     success: function(results) { 
      for (var i = 0; i < results.length; i++) { 
       results[i].relation("ratings").query().find({ 
        success: function(ratings) { 
         // retrieve stars and calculate average rating 
         var total = 0; 
         for (var o = 0; o < ratings.length; o++) { 
          var stars = parseInt(ratings[o].attributes.stars); 
          total += stars; 
         } 
         total = total/ratings.length; // get average rating 

         $scope.$apply(function() { 
          $scope.companies = results.map(function(obj) { 
           console.log(total); // produces correct results 
           return {name: obj.get("name"), rating: total, parseObject: obj}; 
          }) 
         }); 
        } 
       }); 
      } 
     } 
    }); 
} 

在我view我使用下面的代码:

<div ng-repeat="company in companies"> 
    <h1>{{company.name}}</h1> 
    <h3>Rating: {{company.rating}}</h3> 
</div> 

现在,如果我有两个companies他们有的图2和4 ratings,现在角显示器4两者。然而,console.log(total)将显示2和4

如果我的代码是路要走,请告诉我,我要学习尽可能多地。任何帮助非常感谢,谢谢。

可以尝试代码类似下面,

success: function(results) { 
    for (var i = 0; i < results.length; i++) { 
     var result = results[i]; 
     results[i].relation("ratings").query().find({ 
      success: function(ratings) { 
       //calculate total here; 
       //var total = your logic to calculate the total 
       //then store the total in the result object 
       result.total = total; 
      } 
     }) 
    } 
    $scope.$apply(function() { 
     $scope.companies = results.map(function(obj) { 
      console.log(total); // produces correct results 
      return {name: obj.get("name"), rating: obj.total, parseObject: obj}; 
     }) 
    }); 
}