約束の価値を返そうとしています。 Emberの複数の約束がテンプレートで解決されない
は、状況を説明するには、次の4つのモデルがある - 学生の グループでは は、各客観ため得点しています。私は、の目的をとというグループに渡しました。次に、コンポーネントは、各学生のスコアをそのの目的に照会し、平均を返します。
コードは動作しているようですが、console.logsは私が望むものを最終的に私に与えてくれますが、約束はテンプレートに解決されません。私は{object Object}を取得します未解決の約束。
ここで何か不足していますか?複数の約束が解決するのを待っているときに余分なステップが必要ですか?
これは少し具体的ですが、私は答えを理解するとき、私は試してみて、質問を言い換えていただければ幸いです。
コンポーネントコード:
averageScore: Ember.computed(function(){
var students = this.get('group.students');
var objective = this.get('objective');
var store = this.get('store');
var _this = this;
// Create an array of promises of each student's scores
var promises = [];
students.forEach((student) => {
var studentId = student.get('id');
var objectiveId = objective.get('id');
var newPromise = store.queryRecord('snapscore', { 'student' : studentId, 'objective': objectiveId });
promises.pushObject(newPromise);
});
// When promises resolve, find and return the average
return Ember.RSVP.allSettled(promises).then(function(scores){
let scoreTotal = 0;
let scoreCount = scores.length;
console.log("Score count is " + scoreCount);
scores.forEach((score)=>{
console.log("Student's score is " + score.value.get('score'));
scoreTotal = scoreTotal + score.value.get('score');
});
console.log("ScoreTotal is " + scoreTotal);
var average = scoreTotal/scoreCount;
console.log(average);
console.log(typeof(average));
return average;
});
}),
コンポーネントのテンプレートは、単にaverageScoreを返します。
ありがとうございました
が宣誓私はそれを行ってきたのだでした、これは前に...ではないと思う従ってください!完璧な答え、お時間をありがとう。 didReceiveAttrsを使用してプロパティを設定します。 – rjoxford