数据绑定到 Polymer 中的动态路径
Data binding to a dynamic path in Polymer
我正在使用 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
,我想在回答完问题后展示给用户
为了检查用户是否回答了问题,我在 questions
路径中有一个名为 answers
的路径。在 answers
路径中,我将用户的密钥作为用户选择的密钥。
因此,如果用户密钥为 ZjHDMDa270Uyp6sAL02Mam2ftGf2
的用户登录到我的应用程序,则该用户答案的数据绑定路径将为:
[[quesion.answers.ZjHDMDa270Uyp6sAL02Mam2ftGf2.choice]]
现在上面的表达式是我想要绑定的,但是用户 ID 当然会因用户而异,那么我该怎么做呢?换句话说,我想做这样的事情:
[[question.answers.(user.uid).choice]]
聚合数据绑定不支持嵌套或表达式。您可能必须像这样使用 computed binding:
// template's computed binding
[[_getChoice(question, user.uid)]]
// script
Polymer({
_getChoice: function(question, uid) {
return question.answers[uid].choice;
},
...
});
我正在使用 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
,我想在回答完问题后展示给用户
为了检查用户是否回答了问题,我在 questions
路径中有一个名为 answers
的路径。在 answers
路径中,我将用户的密钥作为用户选择的密钥。
因此,如果用户密钥为 ZjHDMDa270Uyp6sAL02Mam2ftGf2
的用户登录到我的应用程序,则该用户答案的数据绑定路径将为:
[[quesion.answers.ZjHDMDa270Uyp6sAL02Mam2ftGf2.choice]]
现在上面的表达式是我想要绑定的,但是用户 ID 当然会因用户而异,那么我该怎么做呢?换句话说,我想做这样的事情:
[[question.answers.(user.uid).choice]]
聚合数据绑定不支持嵌套或表达式。您可能必须像这样使用 computed binding:
// template's computed binding
[[_getChoice(question, user.uid)]]
// script
Polymer({
_getChoice: function(question, uid) {
return question.answers[uid].choice;
},
...
});