大家好我有模特Currency
。我有字段name:string
,default:boolean
。在我的数据库中,只有一条记录可以有默认值,我希望在select标签中选择此记录。
示例:
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"}}
答案 0 :(得分: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.[]')
});