我只是在学习使用 JavaScript、AngularJS 和 Parse,所以,如果我做错了什么,请说出来。我想尽可能多地学习。
我有一个任务,我被指示使用 Parse 和 AngularJS。我想company
在我的companies
对象中显示每一个,然后显示每一个的评级。在 Parse 中,这些存储为两个具有关系的独立对象。
我终于能够计算出评分,但是 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>
现在,如果我有两个companies
,而他们有ratings
2 和 4,那么现在 Angular 都显示 4。但是,console.log(total)
将显示 2 和 4。
如果我的代码有问题,请告诉我,我想尽可能多地学习。非常感谢任何帮助,谢谢。