通过模板将输入标签插入td标签

通过模板将输入标签插入td标签

问题描述:

我有一张桌子,每一行都有一个编辑按钮。如果按下该按钮,则所有td标签都应该有一个包含值的文本输入标签。所以每个td的两个模板会太多。 <tr template ... >将无法​​正常工作,因为td标签将被浏览器忽略,因为tds不会查看模板周围的表格。尝试几乎所有与模板,它没有工作。按下按钮通过模板将输入标签插入td标签

<table> 
    <tr> 
     <td> td11 </td> 
     <td> td12 </td> 
     <td> <button on-click="{{someFunc}}"/> </td> 
    </tr> 
    <tr> 
     <td> td21 </td> 
     <td> td22 </td> 
     <td> <button on-click="{{someFunc}}"/> </td> <!-- this Button will be pressed --> 
    </tr> 
</table> 

后的表应该是这样的:

<table> 
    <tr> 
     <td> td11 </td> 
     <td> td12 </td> 
     <td> <button on-click="{{someFunc}}"/> </td> 
    </tr> 
    <tr> 
     <td> <input type="text" value="td21" /> </td> 
     <td> <input type="text" value="td22" /> </td> 
     <td> <button on-click="{{someFunc}}"/> </td> <!-- this Button will be pressed --> 
    </tr> 
</table> 

既然是有相当大的表,每个TD模板是不是一种选择。我目前有一个解决方法,那就是使用聚合物扩展td标签。

+0

你可以读取td的值并通过js插入一个元素(输入)...这是一个js问题吗? – Mika 2014-10-08 18:02:10

+0

不,它不是一个JS问题。我写了'via templates';) – Azael 2014-10-08 18:29:07

+0

如何创建行('

')是静态HTML还是代码生成? 我猜表格是在一个自定义Polymer元素的模板里面? – 2014-10-08 20:02:10

回答

你可以试试这个

<table> 
    <tr> 
     <td> 
     <template if="{{info['row1']['active'] == false}}">td11</template> 
     <template if="{{info['row1']['active'] == true}}"><input type="text" value="td11"></template> 
     </td> 
     <td> 
     <template if="{{info['row1']['active'] == false}}">td12</template> 
     <template if="{{info['row1']['active'] == true}}"><input type="text" value="td12"></template> 
     </td> 
     <td> 
     <button id="row1" on-click="{{someFunc}}">Click Me</button> 
     </td> 
    </tr> 
</table> 

含有这样的事情

Map info = toObservable({'row1': {'active': false}}); 

someFunc(Event e) { 
    if(info[e.target.id]['active'] == false) { 
     info[e.target.id]['active'] = true; 
    } else { 
     info[e.target.id]['active'] = false; 
    } 
} 

您可以使用其他类型的后备数据结构的去做,并且具有比信息地图更简单的东西后盾码我创造了,但我认为这是你所追求的东西。

你可以试试这个

<table> 
    <tr> 
     <td> 
     <template if="{{info['row1']['active'] == false}}">td11</template> 
     <template if="{{info['row1']['active'] == true}}"><input type="text" value="td11"></template> 
     </td> 
     <td> 
     <template if="{{info['row1']['active'] == false}}">td12</template> 
     <template if="{{info['row1']['active'] == true}}"><input type="text" value="td12"></template> 
     </td> 
     <td> 
     <button id="row1" on-click="{{someFunc}}">Click Me</button> 
     </td> 
    </tr> 
</table> 

含有这样的事情

Map info = toObservable({'row1': {'active': false}}); 

someFunc(Event e) { 
    if(info[e.target.id]['active'] == false) { 
     info[e.target.id]['active'] = true; 
    } else { 
     info[e.target.id]['active'] = false; 
    } 
} 

您可以使用其他类型的后备数据结构的去做,并且具有比信息地图更简单的东西后盾码我创造了,但我认为这是你所追求的东西。

你可以试试这个

<table> 
    <tr> 
     <td> 
     <template if="{{info['row1']['active'] == false}}">td11</template> 
     <template if="{{info['row1']['active'] == true}}"><input type="text" value="td11"></template> 
     </td> 
     <td> 
     <template if="{{info['row1']['active'] == false}}">td12</template> 
     <template if="{{info['row1']['active'] == true}}"><input type="text" value="td12"></template> 
     </td> 
     <td> 
     <button id="row1" on-click="{{someFunc}}">Click Me</button> 
     </td> 
    </tr> 
</table> 

含有这样的事情

Map info = toObservable({'row1': {'active': false}}); 

someFunc(Event e) { 
    if(info[e.target.id]['active'] == false) { 
     info[e.target.id]['active'] = true; 
    } else { 
     info[e.target.id]['active'] = false; 
    } 
} 

您可以使用其他类型的后备数据结构的去做,并且具有比信息地图更简单的东西后盾码我创造了,但我认为这是你所追求的东西。