2016-07-10 3 views
0

EDIT - これは完全な赤いHERRINGです。階層内のuserプロパティの1つに、readOnlyプロパティが設定されていました。これは伝播を妨げていました。オブジェクトのプロパティとのポリマーのデータバインディングの混乱

私はデータバインディングを理解するのに苦労していますし、どのようにプロパティの変更は、私は要素の木構造のセットを持っている時に値が伝播(構造は別個の要素の定義に広がっている - おそらく以下の構造ショーで暗示として<content>タグでない

<my-app user="{{user}}"> 
    <my-session user="{{user}}"> 
    <my-login user="{{user}}"></my-login> 
    </my-session> 
    <template is="dom-if" if="[[user.name]]"> 
    <my-pages user="{{user}}"> 
     <iron-pages> 
     <my-menu user="{{user}}"></my-menu> 
     <my-reports user="{{user}}"></my-reports> 
     </iron-pages> 
    </my-pages> 
    </template> 
</my-app> 

それらの異なる定義でこれらの要素の各々は

user : { 
    type: Object, 
    notify: true 
} 

プロパティを定義し、すべての要素がLでありますIは、アクセス制御のために使用されるkeys呼ばuserの性質を持っているユーザーがログオンした(したがってuser.nameが定義されている)の後

<my-pages>データバインディングがimportHrefを使用して遅延ロードされる双方向

で結ん。特に、<my-menu>とサブ要素<my-reports>はどちらを使用して表示するメニュー項目を決定します。

これはすべて初期ログオン時に正常に動作します。しかし、私がログオンしたユーザーを変更した場合、ユーザーのプロパティへのこの変更は明らかに正しく伝播していません。

私が見ることができるのは、ページの変更中に発生したデバッガからのものです。 userには新しいログオンユーザー値がありますが、には古いユーザーが含まれていますが、<my-pages>userには古いユーザーがいます。何らかの理由でのデータバインディングが、<my-login>から<my-app>に正常に伝播したように見えても、ツリー構造の下では機能していません。 。

おそらく、userの「オブジェクト」がパスだけを変更していないと仮定しています。私はここで何をすべきかについて混乱している。誰かが助けることができる?

+0

コードに構文エラーがあります。あなたは 'my-pages'要素を閉じていません。 – a1626

+0

ユーザーのプロパティにオブザーバを追加してバグを発見しました。その際、readOnlyプロパティを設定したものが発見されました。 – akc42

答えて

1

は本当にあなたの代わりにmy-pagesを閉じるあなたは新しいものを始めたが、ここにコードをエミュレートplunkerだきsyntax errorを除い提供された情報を使用してコードで間違っているものを言うことができません。すべての要素のユーザーを正常に変更できました。

+0

実際のコードには問題はありませんが、readOnlyを持つ中間要素が見つかりました:true変更を伝播させていた 'user'のプロパティ定義で – akc42

関連する問題