在 Polymer 中处理表格和选择下拉列表时,我发现我可以在 <table>
中使用 dom-repeat 模板。/<select>
打印出标签值的数组。这在所有浏览器上都可以完美运行,当然 Internet Explorer 除外。
例子:
<select>
<template is="dom-repeat" items="{{listOfItems}}" as="item">
<option value="{{item.value}}">{{item.name}}</option>
</template>
</select>
另一个直接来自 polymer 元素目录的例子:
<table id="element-table">
...
<tbody>
<template is="dom-repeat" items="[[elements]]">
<tr on-tap="nav" target$="[[item.name]]">
<td class="name" width="100">[[item.name]]</td>
<td class="description relative">[[item.description]]</td>
<td class="tags">
<template is="dom-repeat" items="[[item.tags]]">
<tag-link name="[[item]]" on-tap="tagTapped"></tag-link><span>,</span>
</template>
</td>
<td class="actions">
<element-action-menu element="[[item.name]]" icons-only=""></element-action-menu>
</td>
</tr>
</template>
</tbody>
</table>
现在 Internet Explorer 不支持这点吗(我在 Polymer 网站上注意到他们不允许 IE 浏览器访问表格页面)还是有办法做到这一点?
IE 没有对 <template>
的原生支持标签并有一个额外的怪癖,它对非 <tr>
做了奇怪的事情, <thead>
, 或 <tbody>
表格内的标签和非标签 <option>
选择内的标签。
基本上目前的状态是放置一个 dom-repeat
或模板内部的类似内容只会炸毁 IE 中的解析器,实际上可能会泄漏并破坏应用程序的其他部分,而不仅仅是表格渲染。
Polymer 团队是 definitely aware of this issue但是(截至 2016-04-01)没有官方的解决方法。
您可以尝试使用 CSS display: table
来伪造表格.这是一个丑陋的黑客,但 IE 并没有提供太多的选择。