如何创建将成为文本框、单选按钮或下拉输入的 Ember 组件;基于数据的类型?

Posted

技术标签:

【中文标题】如何创建将成为文本框、单选按钮或下拉输入的 Ember 组件;基于数据的类型?【英文标题】:how to create an Ember-Component which will become either textbox, or radio-button, or dropdown input; based on the type of the data? 【发布时间】:2014-05-21 03:50:20 【问题描述】:

我有一个名为 properties 的对象示例列表:


  "properties": 
  [
    "type": "STRING", "validation": "^https?", "id": "9", "name": "Download URL",
    "type": "DATE", "validation": "2015-01-01 to 2015-02-01", "id": "10", "name": "Next Upgrade",
    "type": "INTEGER", "validation": "1..10", "id": "11", "name": "Number Of Installs",
    "type": "BOOLEAN", "validation": "True/False", "id": "12", "name": "Admin Access"
    "type": "ENUM", "validation": "Basic | Premium | Enterprise | Ultimate ", "id": "13", "name": "Product Edition"
  ]

目前使用数组控制器在模板上显示所有这些属性。

现在我想创建一个表单,我想在其中接受所有这些属性作为输入。 根据属性的类型,我希望在 Emberjs 中有输入类型。

我想编写一个 Ember 组件,它将成为 textbox 用于 STRINGINTEGERDATE 类型,3-way radio-button 用于 BOOLEAN 类型(空、真或假)和 @ 987654329@ 为ENUM 类型。

【问题讨论】:

【参考方案1】:

定义你自己的Ember.Component 而不是Ember.View

这里是工作示例:

//sample route
App.IndexRoute = Ember.Route.extend(
  model: function() 
    return [
    "type": "STRING", "validation": "^https?", "id": "9", "name": "Download URL",
    "type": "DATE", "validation": "2015-01-01 to 2015-02-01", "id": "10", "name": "Next Upgrade",
    "type": "INTEGER", "validation": "1..10", "id": "11", "name": "Number Of Installs",
    "type": "BOOLEAN", "validation": "True/False", "id": "11", "name": "Admin Access"
  ];
  
);

App.MyInputComponent = Ember.Component.extend(
  tagName: 'input',
  attributeBindings: ['customType:type'],
  willInsertElement: function()
    this.set('customType', this.get('content.type'));
  
);

<script type="text/x-handlebars" data-template-name="index">
    #each item in controller
       my-input content=item
    /each
  </script>

工作JSBin

【讨论】:

谢谢,我明白你在那里做了什么。这里的问题是,我希望为property 处理另一种类型,称为ENUM。请你看看我更新的问题,让我知道你的想法吗? (注意:ENUM 应该用下拉列表而不是文本框表示,BOOLEAN 也应该用radio-buttoncheckbox 表示,而不是inputbox)。

以上是关于如何创建将成为文本框、单选按钮或下拉输入的 Ember 组件;基于数据的类型?的主要内容,如果未能解决你的问题,请参考以下文章

Java 创建填充PDF表单域

选择单选按钮后的下拉列表

Delphi 如何操作外部程序的控件(如按钮,文本框,单选按钮等)

eclipse如何创建文本框并获取它的信息

选择其他单选按钮时清除文本框

html: 表单一些常见的输入框