2

Polymer 1.0とFirebaseを使用してWebアプリケーションを構築しています。パスにユーザーIDを持つパスにデータを入力したときにビューを変更したいと考えています。これを行うには、次のようなことをしたいと思います。Polymerの動的パスへのデータバインディング

[[question.answers.(user.uid).choice]] 

もっと詳しく説明しましょう。あなたは上記の<p>要素を見れば、私が起こることをバインディング私のデータを持っているしたい場所hidden属性があるの内側に、

<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> 

:だから、テンプレートでは、私はこのような何かを持っています。 questionsパスの構造は次のようにされています

questions data structure

のでquestionsが質問の集まりであり、各質問は、私が質問に答える後にユーザーを表示するプロパティafterMessageを持っています。

ユーザーが質問に回答しているかどうかを確認するには、questionsパスにanswersというパスがあります。そのanswersパスの中に、ユーザーが選択した選択肢のキーとしてユーザーのキーがあります。

ZjHDMDa270Uyp6sAL02Mam2ftGf2のユーザーキーを持つユーザーは、私のアプリにログインしているのであれば、そのユーザの答えへのパスをデータバインディングは、次のようになります。

[[quesion.answers.ZjHDMDa270Uyp6sAL02Mam2ftGf2.choice]] 

今、この上記の式は、私はにバインドしたいものです、もちろんユーザーIDはユーザーごとに変わるので、どうすればいいですか?言い換えれば、私は次のようなことをしたい:

[[question.answers.(user.uid).choice]] 
+0

を、私は[[question.answers [[[user.uid]]] – dshukertjr

答えて

1

ポリマーデータバインディングはネストや式をサポートしていません。あなたはおそらくこのようなcomputed binding使用しなければならないでしょう:ところで

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

// script 
Polymer({ 
    _getChoice: function(question, uid) { 
    return question.answers[uid].choice; 
    }, 
    ... 
}); 
+0

.choiceプロパティは 'のいずれか、変更をchoice'場合は試してみました'Polymer.Element.set'メソッドまたは' Polymer.Element.notifyPath'メソッドを使ってそれを通知すると、バインディングは更新されません。 – Yairopro

関連する問題