2017-02-10 228 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;