Javascript Ember.js绑定教程

Javascript Ember.js绑定教程,javascript,jquery,ember.js,Javascript,Jquery,Ember.js,根据余烬,此代码片段应该设置App.wife实例的houseHoldIncome属性 App.wife = Ember.Object.create({ householdIncome: 80000 }); App.husband = Ember.Object.create({ householdIncomeBinding: 'App.wife.householdIncome' }); App.husband.get('householdIncome'); // 80000

根据余烬,此代码片段应该设置
App.wife
实例的
houseHoldIncome
属性

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

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

App.husband.get('householdIncome'); // 80000

// Someone gets raise.
App.husband.set('householdIncome', 90000);
console.log(App.wife.get('householdIncome')); // 90000
console.log(App.fixer.get('householdIncome'))
仍然输出80000。这是因为绑定没有立即更新,还是我做错了什么

编辑:
绑定似乎不会立即更新

App.wife.addObserver('householdIncome', function() {
    console.log('Wife income changed: '+App.wife.get('householdIncome'));
});

这将输出更新的收入。

这是预期的行为,因为余烬使用一个名为。这样做的好处是,模型atribute中的几个更改(例如foreach中的更改)将只渲染一次。因此,您不需要关心性能,在观察者和dom更新中

如果使用
Ember.run.sync()
可以强制绑定刷新,以便看到正在传播的更改:

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

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

App.husband.get('householdIncome'); // 80000

// Someone gets raise.
App.husband.set('householdIncome', 90000);
Ember.run.sync();
console.log(App.wife.get('householdIncome')); // 90000
在那把小提琴里,你会看到妻子
家庭收入
财产正在更新