2014-08-19 6 views
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); 
} 

данных выглядит следующим образомОтображение ошибок с помощью firebase-элемента внутри шаблона повторения

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

и в другом месте магазина данных реальных пользователей.

Здесь я ожидаю, что шаблон повторяется для каждого пользователя (member1, member2, member3) соответственно. Тем не менее, он печатает одно и то же имя для трех записей, как если бы он повторно использовал переменную «member» для всех трех элементов firebase в повторе шаблона, что на самом деле не имеет смысла.

Я попытался модифицированными функциями 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> 

Разве я не понимаю, шаблон повторения исправить и использовать его здесь неправильно? Или это ошибка с полимерным шаблоном.

+0

Polymer 1,0 версия вопроса: http://stackoverflow.com/вопросы/30709167/как-ду-ты-петля-два-из-полимеров-firebase-коллекция-элементов/32056183 # 32056183 –

ответ

0

Я думаю, проблема в том, что ретранслятор связывает {{member}} с самим собой.

Проверьте свою Firebase - вы увидите, что привязка не только постоянно отображает имя имени в вашем представлении, но также устанавливает все значения с тем же именем в вашей 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" } 
    } 
}