emberjs.com上双向绑定的示例代码不起作用

时间:2012-12-26 01:52:52

标签: javascript coffeescript ember.js

我在emberjs.com的“文档”页面上输入以下代码 http://emberjs.com/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

当我输入console.log(App.wife.get('householdIncome'));时,我希望得到90000, 正如ember.js上的示例代码所说的那样。

有谁知道什么是错的? 请给我一个帮助。

谢谢!

1 个答案:

答案 0 :(得分:1)

从相同的文档:

  

请注意,绑定不会立即更新。在同步更改之前,Ember等待所有应用程序代码完成运行,因此您可以根据需要多次更改绑定属性,而不必担心在值是瞬态时同步绑定的开销。

您可以使用Ember.Run.next包装console.log语句,以确保在运行之前应用绑定更新。

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
});​