将属性指定为“类型:数组”似乎无法正确解析字符串属性值

时间:2019-01-01 21:11:20

标签: polymer polymer-3.x lit-element

更新:在https://github.com/Polymer/lit-element/issues/411

处提交了错误

根据指南中的信息,我无法为属性实现默认和自定义转换器。在当前版本(0.6.5)中,它表示您可以将类型Array分配给属性,并且该属性会自动从属性的字符串值中解析为JSON,但这似乎不是如代码示例中所述。

这是问题的例证。在控制台中,它应报告一个包含三个元素的数组,但是它返回一个包含一个元素值的字符串的数组,该字符串包含属性值。 render方法的结果还显示仅包含单个字符串的一个<p>元素。

<script type="module">
import { LitElement, html } from 'https://unpkg.com/@polymer/lit-element@0.6.5/lit-element.js?module';

class Histogram extends LitElement {
  static get properties() {
    return {
      values: { type: Array }
    };
  }
  
  constructor() {
    super();
    this.values = [];
  }
  
  render() {
    console.log(Array.isArray(this.values), this.values);
    return html`
<div>
  The elements:
  ${this.values.map(item => html`<p>item: ${item}</p>`)}
</div>
`;
  }
}

customElements.define('x-histogram', Histogram);
</script>

<x-histogram values="[1,2,3]"/>

我也尝试通过提供converter来修改示例,但这似乎也没有被调用。我在做什么错了?

1 个答案:

答案 0 :(得分:1)

我看了看。 0.6.5 updates-element.js文件甚至没有转换为数组。看着0.6.5的npm包,也没有提到数组。

但是master分支确实映射了数组类型,并且它在自述文件中已有提及。如果您将其拉出并直接使用,它将为您工作。