我正在使用Polymer 1.0和Firebase构建一个Web应用程序,我希望在将数据输入到路径中具有用户ID的路径时更改视图。要做到这一点,我想做这样的事情:
[[question.answers.(user.uid).choice]]
让我更详细地解释一下。所以,在模板中,我有类似的东西:
<ul id="question-list">
<template is="dom-repeat" items="[[questions]]" sort="_computeSort" as="question">
<li class="card question" data-key="[[question.$key]]" question="[[question]]">
<h3 class="content">[[question.question]]</h3>
<p hidden$="[[ MY DATA BINDING HERE ]]">[[question.afterMessage]]</p>
</li>
</template>
</ul>
如果查看上面的<p>
元素,hidden
属性中的内容就是我希望数据绑定发生的地方。 questions
路径的结构如下:
所以questions
是一组问题,每个问题都有一个属性afterMessage
,我想在回答问题后向用户展示。
为了检查用户是否回答了问题,我在answers
路径中有一个名为questions
的路径。在answers
路径中,我将用户的密钥作为用户选择的密钥。
因此,如果用户密钥为ZjHDMDa270Uyp6sAL02Mam2ftGf2
的用户登录到我的应用程序,则该用户答案的数据绑定路径为:
[[quesion.answers.ZjHDMDa270Uyp6sAL02Mam2ftGf2.choice]]
现在上面这个表达式是我想要绑定的,但当然用户ID会因用户而异,所以我该怎么办呢?换句话说,我想做这样的事情:
[[question.answers.(user.uid).choice]]
答案 0 :(得分:1)
聚合物数据绑定不支持嵌套或表达式。你可能不得不像这样使用computed binding:
// template's computed binding
[[_getChoice(question, user.uid)]]
// script
Polymer({
_getChoice: function(question, uid) {
return question.answers[uid].choice;
},
...
});