聚合物计算和设置 属性 值 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 = keys
和 return keys
不会产生错误,但它们也不会将名称反映到 dom-repeat
.
您不应在为 computed
定义的函数中进行设置。这个函数应该return值
_namesOjbectToArray: function(obj) {
if (obj) {
return keys = Object.keys(obj);
}
// else {
// return [];
// }
}
我正在尝试通过自定义元素名称 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 = keys
和 return keys
不会产生错误,但它们也不会将名称反映到 dom-repeat
.
您不应在为 computed
定义的函数中进行设置。这个函数应该return值
_namesOjbectToArray: function(obj) {
if (obj) {
return keys = Object.keys(obj);
}
// else {
// return [];
// }
}