0

私は JavaScript、AngularJS、および Parse の使い方を学んでいるところです。できるだけ多くのことを学びたいです。

Parse と AngularJS を使用するように指示された課題があります。オブジェクトにそれぞれを表示companyしてから、それぞれの評価を表示したいと考えています。companiesParse では、これらは関係を持つ 2 つの別個のオブジェクトとして格納されます。

ようやく評価を計算できるようになりましたが、Angular が評価のデータを上書きしています。各評価ではなく、最後に計算された評価を表示しています。は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>

現在、私が 2 つ持っcompaniesていて、それらがratings2 と 4 の場合、現在、Angular は両方に対して 4 を表示します。ただし、 はconsole.log(total)2 と 4 を表示します。

私のコードがかなりずれている場合は、教えてください。できるだけ多くのことを学びたいです。どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1