动态设置组件tagName

时间:2015-08-03 05:20:35

标签: ember.js

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

// 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来实现此功能?

感谢。

2 个答案:

答案 0 :(得分:2)

为什么不显示隐藏的输入字段,然后单击取消隐藏并关注? <td>只能成为<input>,因为<input>不能成为<tr>的直接孩子,也不会有意义。

答案 1 :(得分:1)

如果输入元素不适合您,那么内联的contenteditable如何:

public AccountController
{
    public ActionResult DoSomething(int id, string username)
    {
    }
}

然后在// components/inline-edit.js export default Ember.Component.extend({ tagName: 'span', attributeBindings: ['contenteditable'], contenteditable: true, ... });

中使用它
<td>