0
<template repeat="memberId in members | objKeys">
  <firebase-element data={{member}} location="{{'SOME_LOCATION/' + memberId}}"></firebase-   element>
  <h2>member.name</h2>
</template>

objKeys: function(members) {
  return Object.keys(members);
}

数据看起来像这样

members = {
   'memberId_1': true,
   'memberId_2': true,
   'memberId_3': true
}

并在另一个位置存储实际用户数据。

在这里,我期望模板重复相应地呈现每个用户(member1、member2、member3)。但是,它为 3 个条目打印出相同的名称,就好像它为模板重复中的所有 3 个 firebase 元素重新使用变量“member”一样,这实际上没有意义。

我试图修改 objKeys 函数以返回

[ {memberId: memberId_1, member: {}}, 
  {memberId: memberId_2, member: {}},
  {memberId: memberId_3, member: {}]

然后将内部成员对象用于 firebase 元素,但结果仍然相同

<template repeat="{{item in members | objKeys}}>
  <firebase-element data={{item.member}} location={{'SOME_LOCATION/' + item.memberId}}>    </firebase-element>
</template>

我不理解模板重复正确并在这里错误地使用它吗?还是聚合物模板的错误。

4

1 回答 1

0

我认为问题在于中继器绑定{{member}}到自身。

检查您的 Firebase - 您会看到绑定不仅在您的视图中重复显示名称 name,而且还在您的 Firebase 中将所有值设置为相同的名称。

试试这个,使用{{members[memberId}}

<polymer-element name="member-test">

<template>
<firebase-element data="{{members}}" location="{{'https://YOUR_APP_NAME.firebaseio.com/members/'}}"></firebase-element>
<template repeat="{{memberId in members | objKeys}}">
  <firebase-element data="{{members[memberId]}}" location="{{'https://YOUR_APP_NAME.firebaseio.com/members/' + memberId}}"></firebase-element>
  <h2>{{members[memberId].name}}</h2>
</template>
</template>

<script>
Polymer({

  objKeys: function(members) {
    if(!members) return null;
    return Object.keys(members);
  }

});
</script>

</polymer-element>

这假设您的 Firebase 具有以下格式的数据:

{ members:
  { memberID1: { name: "Name1" },
    memberID2: { name: "Name2" }
  }
}
于 2014-11-11T05:41:36.560 回答