我在聚合物元素中有以下回调,仅当接收到具有特定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.Spark的值只能在1400万范围内,其他值应为两位数并带有小数。
最佳答案
您的代码中很少出现的错误是sparks
type
是Object
,但value
和Array
。因此将sparks
类型更改为Array
对于数组和对象,都使用函数返回值。根据Polymer的建议,它始终使用函数返回Object和Arrays的值。其背后的原因是,该元素的每个实例都有自己的对象/数组副本
value:function(){
return []
}