我正在尝试通过自定义元素名称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
属性,但是,我得到以下错误:
Uncaught TypeError: Cannot set property names of #<x-names> which has only a getter
我对Polymer很新,所以我确定这是一个快速解决方案,但它100%逃避了我。我查看了文档(我还习惯了),并尝试了其他一些方法,但没有运气:
this.names = keys
和return keys
不会生成错误,但它们也不会将名称反映到dom-repeat
。
答案 0 :(得分:4)
您不应该为computed
定义的功能进行设置。此函数应返回值
_namesOjbectToArray: function(obj) {
if (obj) {
return keys = Object.keys(obj);
}
// else {
// return [];
// }
}