in Polymer无法推动数组类型聚合物属性中的元素

时间:2018-10-07 17:12:24

标签: javascript polymer

我在项目中使用Polymer 1。我在此属性中使用数组类型的聚合物属性,我想在_extractTimeSeriesData回调中保存或存储元素。以下是我正在使用的代码段。每当我从Rest API获得响应时,此回调就会执行。 在这里我想将元素存储在_series属性中为(self._series.push({x:point [0],y0:(1-(point [1]))* 100});

但是在执行代码时,我得到错误,因为未捕获的TypeError:self._series.push不是函数

Polymer({
      is: 'test-view',

      behaviors: [GlobalsBehaviour],

      properties: {

           timeSeriesData: {
            type: Object,
            observer: '_extractTimeSeriesData'
          },
       _series: {
          type :Array,
          value :[]
        },

  _extractTimeSeriesData: function (raw) {

          if (raw !== null) {
            tagsArray = raw.tags;
            for (var i = 0; i < tagsArray.length; i++) {
              if (this.ltuTag == tagsArray[i].name) {
                var datapoints = raw.tags[i].results[0].values;
                var self = this;
                datapoints.forEach(function (point) {
                  self._series.push({ x: point[0], y0: (1 - (point[1])) * 100 });
                });
                console.log("chart data value is", _series);
              }
            }
          }
        },

我尝试先使用 this._series.push({x:point [0],y0:(1-(point [1]))* 100});但是它没有用,然后我也尝试使用varible作为self来引用上面的代码,但这没有用。

任何人都可以告诉我如何存储数组类型聚合物属性中的元素。

1 个答案:

答案 0 :(得分:4)

您必须致电self.push('_series', dataStuff)。 Polymer 1确实为您包装了默认的操作方法。因此,要更改属性,您必须调用this.push('propName', value)this.set('propName', value)this.splice('propName', value)等。