2013-03-25 56 views
0

你好傢伙我有型號Currency。我有字段name:string,default:boolean。在我的數據庫中,只有一條記錄可以有默認值,我希望在選擇標籤中選擇這條記錄。默認值在選擇Ember js

實施例:

name: Eur default:false 

name: USD default: true 

name: RUR default: false 

我想有:

<selected> 
    <option>Eur</option 
    <option selected=selected>USD</option 
    <option>RUR</option 
</selected> 

Route.js

EmberMoney.IncomesRoute = Ember.Route.extend 
    model: -> 
    EmberMoney.Income.find() 
    setupController: (controller) -> 
    controller.set('currencies', EmberMoney.Currency.find()); 

incomes.handlebars

// Some output with Incomes records 

{{view Ember.Select 
     contentBinding="controller.currencies" 
     optionLabelPath="content.name" 
     optionValuePath="content.id"}} 

回答

1

你也可以繼承Ember.Select和覆蓋selection這樣:

EmberMoney.Select = Ember.Select.extend({ 
    selection: Ember.computed(function (key) { 
     var content = this.get('content'); 
     if (!content || !content.length) return null; 

     return content.findProperty('default', true) 
    }).property('content.[]') 
}); 

因爲selection在子類中沒有一個value參數,計算出的屬性將被永久儘快更換該實例選擇被改變。

注意,如果你設置了一個用於selection結合,selection幾乎會立即覆蓋,你反而要定義此屬性源對象或變得更加複雜:

EmberMoney.Select = Ember.Select.extend({ 
    selection: Ember.computed(function (key, value) { 
     if (value === undefined || Ember.isNone(value)) { 
      var content = this.get('content'); 
      if (!content || !content.length) return null; 

      return content.findProperty('default', true) 
     } else { 
     return value; 
     } 
    }).property('content.[]') 
}); 
+0

感謝您的幫助但我不明白。在什麼文件中最好放置這個擴展選擇?我把它放在視圖文件中。可以嗎?這是呈現此選擇的正確方法?當我在我的第一篇文章中呈現?這對我不起作用。對不起,愚蠢的問題。 – EJIqpEP7 2013-03-26 05:20:32