인덱스가있는 목록 (아래 코드의 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
}
});
감사합니다. 그러나 이는 목록의 새로운 요소가 하나의 새로운 요소를 그리는 대신 전체 목록 DOM을 다시 그려야한다는 것을 의미합니다. 나는 여기 예를 들어 채팅에 대해 생각하고 있습니다. 그것은 매우 효율적으로 보이지 않습니다. –
'dom-repeat'에서 항목이 변경되면 항상 목록이 다시 렌더링됩니다. [iron-list] (https://www.webcomponents.org/element/PolymerElements/iron-list)를보십시오. – a1626
그건 제가 경험 한 것이 아닙니다. 카운터를 증가시키고 값을 반환 한 각 돔 반복 객체 내부의 함수를 사용했습니다. 폴리머 1의 경우, 배열에 요소 1 개를 추가하면 카운터가 1 씩 증가합니다. 그러나 폴리머 2에서 카운터는 배열의 길이만큼 자주 증가합니다. –