使用 dom-repeat 平面字符串数组
Using dom-repeat over a flat array of strings
我有一个平面字符串数组 protocol.domainNames = ["a", "b", "c"]
,我正尝试使用此模板在组件中呈现它:
<select id="select-domain">
<option>Select domain</option>
<template is="dom-repeat" items="{{protocol.domainNames}}" as="domainName">
<option value="{{index}}">{{domainName}}</option>
</template>
</select>
不幸的是,我得到的 <option>
列表是空的:
docs 中的所有示例都显示包含对象的列表,我找不到任何关于不支持平面列表的信息。我做错了什么?
[编辑] 所以这个问题似乎有点复杂,参考this plunker。事实证明,将新项目推送到 protocol.domainNames
会导致问题。
你需要做的
this.push('protocol.domainNames', item);
而不是
protocol.domainNames.push(item)
以便 Polymer 可以看到您的数据发生变化。
相关文档可以在https://www.polymer-project.org/1.0/docs/devguide/templates.html#dom-repeat
找到
此外,我发现此时最好避免使用字符串数组,因为双向绑定不起作用。我正在将我的对象序列化为对象数组,这样就可以正常工作了。关于 Polymer GitHub 的问题。 https://github.com/Polymer/polymer/issues/1821#issuecomment-110804603
我有一个平面字符串数组 protocol.domainNames = ["a", "b", "c"]
,我正尝试使用此模板在组件中呈现它:
<select id="select-domain">
<option>Select domain</option>
<template is="dom-repeat" items="{{protocol.domainNames}}" as="domainName">
<option value="{{index}}">{{domainName}}</option>
</template>
</select>
不幸的是,我得到的 <option>
列表是空的:
docs 中的所有示例都显示包含对象的列表,我找不到任何关于不支持平面列表的信息。我做错了什么?
[编辑] 所以这个问题似乎有点复杂,参考this plunker。事实证明,将新项目推送到 protocol.domainNames
会导致问题。
你需要做的
this.push('protocol.domainNames', item);
而不是
protocol.domainNames.push(item)
以便 Polymer 可以看到您的数据发生变化。
相关文档可以在https://www.polymer-project.org/1.0/docs/devguide/templates.html#dom-repeat
找到此外,我发现此时最好避免使用字符串数组,因为双向绑定不起作用。我正在将我的对象序列化为对象数组,这样就可以正常工作了。关于 Polymer GitHub 的问题。 https://github.com/Polymer/polymer/issues/1821#issuecomment-110804603