我只是学习使用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。
如果我的代码已经关闭,请告诉我,我想尽可能多地学习。非常感谢任何帮助,谢谢。
答案 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};
})
});
}