2017-02-10 8 views
0

인덱스가있는 목록 (아래 코드의 seedPosition 속성)을 표시하기 위해 Polymer 1 (최신 버전) + polymerfire (최신 버전)을 사용했습니다. Polymer 1에서는 Firebase에 하나의 객체를 추가 할 때 인덱스가 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

감사합니다. 그러나 이는 목록의 새로운 요소가 하나의 새로운 요소를 그리는 대신 전체 목록 DOM을 다시 그려야한다는 것을 의미합니다. 나는 여기 예를 들어 채팅에 대해 생각하고 있습니다. 그것은 매우 효율적으로 보이지 않습니다. –

+0

'dom-repeat'에서 항목이 변경되면 항상 목록이 다시 렌더링됩니다. [iron-list] (https://www.webcomponents.org/element/PolymerElements/iron-list)를보십시오. – a1626

+0

그건 제가 경험 한 것이 아닙니다. 카운터를 증가시키고 값을 반환 한 각 돔 반복 객체 내부의 함수를 사용했습니다. 폴리머 1의 경우, 배열에 요소 1 개를 추가하면 카운터가 1 씩 증가합니다. 그러나 폴리머 2에서 카운터는 배열의 길이만큼 자주 증가합니다. –

0

[[tutorValues(item)]]를 사용해보십시오. 빈 함수 호출을 한 번만 호출됩니다. 또한

싱크 e 당신은 원시 값을 관찰하고 있으며, 관찰자는 그것을 직접 설정할 때 호출되어야합니다. this.seedPosition = this.seedPosition + 1;