数据绑定到 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;
  },
  ...
});