AngularJS:ng-repeat错误地显示数据

时间:2013-03-12 01:12:36

标签: javascript angularjs

我只是学习使用JavaScript,AngularJS和Parse,所以,如果我不正当地做任何事情,请说出来。我想尽可能多地学习。

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

我终于能够计算出评分,但Angular会覆盖评级数据。它显示计算的最后评级,而不是每个评级。 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

现在,如果我有两个ratings并且他们有console.log(total)的2和4,那么现在Angular显示两个{4}。但是,{{1}}将显示2和4。

如果我的代码已经关闭,请告诉我,我想尽可能多地学习。非常感谢任何帮助,谢谢。

1 个答案:

答案 0 :(得分:0)

你能尝试类似下面的代码,

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