Ember.js 入門指南——繫結(bingding)
阿新 • • 發佈:2019-02-07
正如其他的框架一樣Ember也包含了多種方式繫結實現,並且可以在任何一個物件上使用繫結。也就是說,繫結大多數情況都是使用在Ember框架本身,對於開發最好還是使用計算屬性。
1,雙向繫結
// 雙向繫結 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會等待直到程式程式碼完成執行完成並且是在同步改變之前。所以你可以多次改變計算屬性的值,由於繫結是很短暫的所以也不需要擔心開銷問題。
2,單向繫結
單向繫結只會在一個方向上傳播變化。相對雙向繫結來說,單向繫結做了效能優化,所以你可以安全的使用雙向繫結,對於雙向繫結如果你只是在一個方向上關聯其實就是一個單向繫結。
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'));