我在项目中使用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来引用上面的代码,但这没有用。
任何人都可以告诉我如何存储数组类型聚合物属性中的元素。
答案 0 :(得分:4)
您必须致电self.push('_series', dataStuff)
。 Polymer 1确实为您包装了默认的操作方法。因此,要更改属性,您必须调用this.push('propName', value)
或this.set('propName', value)
或this.splice('propName', value)
等。