0

emberjs.comhttp : //emberjs.com/documentation/の「documentation」ページに次のコードを入力しました

しかし、それは私が期待する結果を示していません。何故ですか?

App.wife = Ember.Object.create({
    householdIncome: 80000
});

App.husband = Ember.Object.create({
    householdIncomeBinding: 'App.wife.householdIncome'
});

console.log(App.husband.get('householdIncome')); //it shows 80000

App.husband.set('householdIncome', 90000);

**console.log(App.wife.get('householdIncome')); // it shows 80000 not 90000**
console.log(App.husband.get('householdIncome')); // this shows 90000

ember.jsのサンプルコードにあるように、console.log(App.wife.get('householdIncome'));と入力すると、90000になると予想しています。

誰かが何が悪いのか知っていますか?助けてください。

ありがとう!!

4

1 に答える 1

1

同じドキュメントから:

バインディングはすぐには更新されないことに注意してください。Emberは、変更を同期する前にすべてのアプリケーションコードの実行が終了するまで待機するため、値が一時的な場合にバインディングを同期するオーバーヘッドを気にすることなく、バインドされたプロパティを何度でも変更できます。

console.logステートメントをEmber.Run.nextでラップして、実行前にバインディング更新が適用されていることを確認できます。

App.husband.set('householdIncome', 90000);

Ember.run.next(function() {
  console.log("her income: " + App.wife.get('householdIncome')); // it shows 90000
  console.log("his income: " + App.husband.get('householdIncome')); // it also shows 90000
});​
于 2012-12-26T03:06:46.067 に答える