2

我正在使用 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]]
4

1 回答 1

1

Polymer 数据绑定不支持嵌套或表达式。您可能必须使用这样的计算绑定

// template's computed binding
[[_getChoice(question, user.uid)]]

// script
Polymer({
  _getChoice: function(question, uid) {
    return question.answers[uid].choice;
  },
  ...
});
于 2017-05-19T22:44:32.963 回答