首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态设置组件tagName

动态设置组件tagName
EN

Stack Overflow用户
提问于 2015-08-03 13:20:35
回答 2查看 419关注 0票数 1

根据我所看到的,这在默认情况下是不可能的,但我希望新的Glimmer引擎能够改善这一点。我正在为一个表创建一个内联编辑组件。默认情况下,我希望组件是td元素,但有选择地成为交互上的输入元素。

代码语言:javascript
复制
// components/inline-edit.js
tagName: 'td',
click: function() {
    this.set('tagName', 'input');
    this.rerender(); // prolly not necessary, but thought I'd give it a go
}

不幸的是,这不起作用。我是不是遗漏了什么?我使用的是Ember 1.13.3,但我需要选择Glimmer才能正常工作吗?

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2015-08-03 13:48:04

为什么不将输入字段显示为隐藏,然后单击“取消隐藏”并进行聚焦?<td>不能简单地变成<input>,因为<input>不能是<tr>的直接子级,这也没有意义。

票数 2
EN

Stack Overflow用户

发布于 2015-08-04 03:23:03

如果一个input元素对你不起作用,那么使用inline contenteditable怎么样:

代码语言:javascript
复制
// components/inline-edit.js
export default Ember.Component.extend({

  tagName: 'span',
  attributeBindings: ['contenteditable'],
  contenteditable: true,
  ...
});

然后在<td>中使用它

代码语言:javascript
复制
{{#each}}
<tr>
  <td>{{inline-edit}}</td>
</tr>
{{/each}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31779900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档