我有一个简单的<firebase-query>
标签,我想在通过<dom-repeat>
. 比如我需要把一些字段变成链接,还要解析一些日期。
所以,一旦数据准备好,我需要获取数据,遍历每个项目,并更改一些值。
为此,我对数据进行了观察,以检测数据何时准备就绪。但是,我不知道如何遍历该 JavaScript 函数中的数据。出于某种原因,for(var i in items)
尽管这些项目确实存在,但它不起作用。
这是组件:
<dom-module id="cool-stuff">
<template>
<firebase-query id="query" path="/items" data="{{items}}"></firebase-query>
<template is="dom-repeat" items="{{items}}" as="item">
[[item.name]]<br />
[[item.date]]<br />
</template>
</template>
<script>
Polymer({
is: 'ix-table',
properties: {
items: {type: Object, observer: "_itemsChanged"},
}
itemsChanged: function(data) {
// how do I loop through the data received from firebase-query?
console.log(data);
}
});
</script>
</dom-module>
理想情况下,我想要在观察者函数中做的就是:
for(var i in data) {
obj = data[i];
obj.name = '<a href="/item/"+obj.key>'+ojb.name+'</a>';
}
但我似乎无法遍历数据。
在观察者函数内部,console.log(data)
返回一些奇怪的东西,如下所示:
Array[o]
0: Object (which contains a proper item)
1: Object (same)
2: Object (same)
更新:
这是 console.log(data) 返回的屏幕截图(从观察者内部):
该数组似乎填充了所有对象,但它显示为 Array[0]。所以它不会让我遍历它们。
更新 2:
感谢arfost,这是解决方案:
<script>
Polymer({
is: 'ix-table',
properties: {
items: {type: Object},
}
observers: [
'_itemsChanged(items.splices)'
],
_itemsChanged: function(changeRecord) {
if (changeRecord) {
changeRecord.indexSplices.forEach(function(s) {
for (var i=0; i<s.addedCount; i++) {
var index = s.index + i;
var item = s.object[index];
console.log('Item ' + item.name + ' added at index ' + index);
// do whatever needed with the item here:
this.items[index].name = "New name";
}
}, this);
}
},
});
</script>