2017-02-10 227 views
0

我用聚合物1(最新版本)加上polymerfire(最新版本)來顯示一個索引列表(我的代碼中的seedPosition屬性如下)。在聚合物1中,當我向Firebase添加一個對象時,索引增加1,但是當我將所有內容更新爲聚合物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

感謝您的鏈接。但這實際上意味着,列表中的新元素會強制重新繪製整個列表,而不是僅繪製一個新元素。我在這裏想一個聊天作爲例子。這似乎不是很有效。 –

+0

如果項目更改,'dom-repeat'列表總是重新呈現。你應該看看[iron-list](https://www.webcomponents.org/element/PolymerElements/iron-list)。 – a1626

+0

這不是我所經歷的。我在每個dom-repeat對象中使用了一個函數來遞增計數器並返回值。對於聚合物1,當向陣列添加1個元素時,計數器增加1。但在聚合物2中,計數器增加的頻率與陣列的長度一樣多。 –

0

嘗試[[tutorValues(item)]]。空函數調用只能調用一次。

而且正弦e你正在觀察一個原始值,當直接設置它時應該調用觀察者,例如, this.seedPosition = this.seedPosition + 1;