使用 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