0

大家好,我有模特Currency。我有字段name:stringdefault:boolean. 在我的数据库中,只有一条记录可以具有默认值,我希望在选择标签中选择这条记录。

例子:

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>

路由.js

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

收入.车把

// Some output with Incomes records

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

1 回答 1

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参数,所以一旦更改选择,计算属性将被永久替换为该实例。

请注意,如果您为 , 设置绑定selectionselection将几乎立即被覆盖,您将不得不在源对象上定义此属性或变得更复杂:

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.[]')
});
于 2013-03-25T16:28:22.177 回答