聚合物计算和设置 属性 值 this.set() 不起作用

Polymer compute and set property value with this.set() not working

我正在尝试通过自定义元素名称 x-names 在数组中显示名称列表。显示姓名列表的代码如下:

<x-names names="{{names}}"></x-names>
<template is="dom-repeat" items="[[names]]" as="name">
  <h5>Name: [[name]]</h5>
</template>

x-names元素定义如下:

<dom-module id="x-names">
  <template>
    <akc-meta-query key="names" value="{{_namesObject}}"></akc-meta-query>
  </template>
  <script>
    Polymer({

      is: 'x-names',

      properties: {

        names: {
          type: Array,
          computed: '_namesObjectToArray(_namesObject)',
          value: [],
          notify: true
        },

        _namesObject: {
          type: Object
        }
      },

      _namesOjbectToArray: function(obj) {
        if (obj) {
          var keys = Object.keys(obj);
          this.set('names', keys);
        }
      }
    });
  </script>
</dom-module>

对象的键是名称,所以我只想获取键并将该数组设置为 names 属性,but ,我收到以下错误:

Uncaught TypeError: Cannot set property names of #<x-names> which has only a getter

我是 Polymer 的新手,所以我确信这是一个快速修复,但它 100% 逃避了我。我查看了文档(我仍然习惯了),并尝试了其他几种方法但没有成功:

this.names = keysreturn keys 不会产生错误,但它们也不会将名称反映到 dom-repeat.

您不应在为 computed 定义的函数中进行设置。这个函数应该return值

  _namesOjbectToArray: function(obj) {
    if (obj) {
      return keys = Object.keys(obj);
    } 
     // else {
     // return [];
     // }
  }