2017-02-10 14 views
0

私は、ポリマー1(最新版)+ polymerfire(最新版)を使用して、インデックス付きリスト(下のコードにseedPositionのプロパティ)を表示しました。 Polymer 1では、Firebaseに1つのオブジェクトを追加するとインデックスが1つ増えましたが、すべてをPolymer 2.0プレビューに更新したとき、インデックスはリスト全体の長さだけ増加しました。これは、オブジェクト全体が更新され、新たに追加されたものではないことを示唆しています。アレイオブザーバーのポリマー1とポリマー2に変更がありましたか?

私は亭経由#2.0-previewなど、すべての要素をロードして作られ、そしてポリマー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 
    } 
}); 

答えて

0

あなたの質問への短い答えはyesです。あなたは持っている必要があります導入された変更点のリストの詳細についてはthisを見てください。

+0

リンクありがとうございます。しかし、リスト内の新しい要素は、新しい要素を1つだけ描画するのではなく、リスト全体を強制的に再描画することを意味します。私はここでチャットについて考えています。それは非常に効率的ではないようです。 –

+0

アイテムが変更された場合、 'dom-repeat'リストは常に再レンダリングされます。 [iron-list](https://www.webcomponents.org/element/PolymerElements/iron-list)をご覧ください。 – a1626

+0

それは私が経験したことではありません。私は、カウンタをインクリメントして値を返す各dom-repeatオブジェクトの中の関数を使用しました。ポリマー1では、アレイに1元素を添加すると、カウンターは1増加した。しかしポリマー2では、カウンターはアレイの長さと同じくらい増えた。 –

0

[[tutorValues(item)]]を試してみてください。空の関数呼び出しは一度だけ呼ばれている。また

シンクあなたはプリミティブな値を観察していますが、オブザーバーは直接設定するときに呼び出さなければなりません。 this.seedPosition = this.seedPosition + 1;

関連する問題