我在聚合物元素中有以下回调,只有在收到具有特定dataid
值的数据时才会触发。
Polymer({
is: 'widget-singlevalue',
properties: {
dataid: {
type: String
},
value: {
type: String,
value: 'Loading'
},
sparks: {
type: Object,
value: []
}
},
ready: function() {
console.log(this.dataid);
var self = this;
registerCallback(this.dataid, function (data) {
var y = data.data[0];
var i = y[Object.keys(y)[0]];
self.push('sparks', i);
console.log(self.dataid + ": " + self.sparks);
self.value = i;
});
}
});
元素:
<widget-singlevalue name="Retrieves Per Minute" dataid="AvgRetPerMin"></widget-singlevalue>
<widget-singlevalue name="Total" dataid="Total"></widget-singlevalue>
value
似乎总是正确的,但是当我查看每个小部件/元素上的sparks
数组时,它们会混淆。这是我当前的控制台输出:
AvgRetPerMin: 63.81,63.81,14891940,14891940,57.67,57.67,14892034,14892034,57.33,57.33
Total: 63.81,14891940,14891940,57.67,57.67,14892034,14892034,57.33,57.33,14892034
Total.Sparks应该只有1400万的范围内的值,另一个应该是带小数的两位数。
答案 0 :(得分:1)
您的代码中存在的错误很少
sparks
type
为Object
但value
为Array
。因此,将sparks
类型更改为Array
对于数组和对象都使用函数来返回值。根据Polymer推荐,它总是使用函数来返回Object和Arrays的值。这背后的原因是元素的每个实例都有自己的Object / Array
副本value:function(){
return []
}