回调实例冲突?

时间:2016-09-13 19:23:05

标签: javascript jquery polymer

我在聚合物元素中有以下回调,只有在收到具有特定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万的范围内的值,另一个应该是带小数的两位数。

1 个答案:

答案 0 :(得分:1)

您的代码中存在的错误很少

  • sparks typeObjectvalueArray。因此,将sparks类型更改为Array
  • 对于数组和对象都使用函数来返回值。根据Polymer推荐,它总是使用函数来返回Object和Arrays的值。这背后的原因是元素的每个实例都有自己的Object / Array

    副本
    value:function(){
            return []
          }