本系列文章所有從(http://ibeginner.sinaapp.com/)遷移過來,歡迎訪問原網站。ubuntu
正如其餘的框架同樣Ember也包含了多種方式綁定實現,而且能夠在任何一個對象上使用綁定。也就是說,綁定大多數狀況都是使用在Ember框架自己,對於開發最好仍是使用計算屬性。vim
// 雙向綁定 Wife = Ember.Object.extend({ householdIncome: 800 }); var wife = Wife.create(); Hasband = Ember.Object.extend({ // 使用 alias方法實現綁定 householdIncome: Ember.computed.alias('wife.householdIncome') }); hasband = Hasband.create({ wife: wife }); console.log('householdIncome = ' + hasband.get('householdIncome')); // output > 800 // 能夠雙向設置值 // 在wife方設置值 wife.set('householdIncome', 1000); console.log('householdIncome = ' + hasband.get('householdIncome')); // output > 1000 // 在hasband方設置值 hasband.set('householdIncome', 10); console.log('wife householdIncome = ' + wife.get('householdIncome'));
須要注意的是綁定並不會馬上更新對應的值,Ember會等待直到程序代碼完成運行完成而且是在同步改變以前。因此你能夠屢次改變計算屬性的值,因爲綁定是很短暫的因此也不須要擔憂開銷問題。安全
單向綁定只會在一個方向上傳播變化。相對雙向綁定來講,單向綁定作了性能優化,因此你能夠安全的使用雙向綁定,對於雙向綁定若是你只是在一個方向上關聯其實就是一個單向綁定。性能優化
var user = Ember.Object.create({ fullName: 'Kara Gates' }); UserComponent = Ember.Component.extend({ userName: Ember.computed.oneWay('user.fullName') }); userComponent = UserComponent.create({ user: user }); console.log('fullName = ' + user.get('fullName')); // 從user能夠設置 user.set('fullName', "krang Gates"); console.log('component>> ' + userComponent.get('userName')); // UserComponent 設置值,user並不能獲取,由於是單向的綁定 userComponent.set('fullName', "ubuntuvim"); console.log('user >>> ' + user.get('fullName'));