聚合物1与聚合物2相比,阵列观察者是否有变化?

时间:2017-02-10 20:22:35

标签: polymer-1.0 polymer-2.x

我使用Polymer 1(最新版本)加上polymerfire(最新版本)来显示带有索引的列表(我的代码中的seedPosition属性)。在Polymer 1中,当我向Firebase添加一个对象时,索引加1,但是当我将所有内容更新为Polymer 2.0-preview时,索引增加了整个列表长度。这表明整个对象得到了更新,而不是新添加的。

我做的唯一更改是通过bower将所有元素加载为#2.0-preview,并将类语法更改为Polymer 2(例如class ClassName extends Polymer.Element {...}

<!-- load the firebase array -->
<firebase-query app-name="firebaselogin" path="/exerciseLog" data="{{exerciseLogData}}"></firebase-query>

<template is="dom-repeat" items="{{exerciseLogData}}">
  [[tutorValues()]]
</template>

Polymer({
  properties: {
    seedPosition: {
      type: Number,
      value: -1
    }
  }

  observers: [
    "seedPositionChanged(seedPosition)"
  ],

  tutorValues: function(){
    this.set("seedPosition", this.get("seedPosition") + 1);
  }

  seedPositionChanged: function (seedPosition) {
    // Here the seed value gets called exaclty once when adding ONE element to the {{exerciseLogData}} data
  }
});

2 个答案:

答案 0 :(得分:0)

您的问题的简短回答是yes。您应该查看this,了解有关已引入的更改列表的更多详细信息。

答案 1 :(得分:0)

试试[[tutorValues(item)]]。空函数调用只调用一次。

此外,由于您正在观察原始值,因此在直接设置观察者时应该调用它,例如this.seedPosition = this.seedPosition + 1;