我可以使用简单的对象在把手中使用select-2标签吗?

时间:2016-04-13 04:04:48

标签: ember.js handlebars.js select2 ember-select

我有一个对象

let StatusDescriptions = {
            'A' : 'Available' ,
            'W' : 'Waitlisted' ,
            'C' : 'Closed'
};

可在页面中找到。我使用把手来显示页面。我可以在select-2标签中使用此对象吗?我尝试将optionValuePath作为'key''id'等,我知道这很愚蠢。我也是Ember的新手。请帮忙。

{{select-2 id="myID" content=StatusDescriptions optionLabelPath="what should be here" placeholder='Choose Status' searchEnabled=false}}

1 个答案:

答案 0 :(得分:0)

更新:如果您已经安装了Select 2 Ember addon ...(如果没有,请在下面说明)

您的对象应如下所示:

statusDescriptions: [
  {
    id: 'A',
    text: 'Available'
  },
  {
    id: 'W',
    text: 'Waitlisted'
  },
  {
    id: 'C',
    text: 'Closed'
  }
]

所以你可以把它拿在车把上:

{{select-2
    content=statusDescriptions
    id=id
    value=selectedChoice
    searchEnabled=false
}}

在您的车把或控制器中,您可以在计算属性中观察或使用selectedChoice属性。 (这可能在您的车把文件中:)

Selected: {{selectedChoice.id}} - {{selectedChoice.text}}

Update2 :如果您确实想使用简单对象,可以使用计算属性进行转换。例如,这可能在您的控制器中:

import Ember from 'ember';

export default Ember.Controller.extend({

  statusDescriptions: {
                        'A' : 'Available',
                        'W' : 'Waitlisted',
                        'C' : 'Closed'
                      },

  statusForSelect: Ember.computed('statusDescriptions', function() {
    const statusDescriptions = this.get('statusDescriptions');

    return Object.keys(statusDescriptions).map(key =>
      Object.create({id: key, text: statusDescriptions[key]})
    );
  })

});

因此,在您的模板中,您可以将statusForSelect用作content

{{select-2
    content=statusForSelect
    id=id
    value=selectedChoice
    searchEnabled=false
}}

如果您还没有安装Select 2 addon:

是的,您可以在Ember项目中使用Select 2,但您必须安装特定的Ember插件。您最喜爱的javascript库已经移植到Ember,您可以在这里查看:http://www.emberobserver.com

您可以在此处找到有关选择插件的列表:https://www.emberobserver.com/categories/select

如您所见,有一个ember-select-2插件。在项目文件夹中运行:

ember install ember-select-2

如果您想使用此套餐,请按照说明操作:https://github.com/iStefo/ember-select-2

但是,有更多最新的选择包,你可以尝试一下。其中最受欢迎的是:http://www.ember-power-select.com/