2017-02-16 17 views
1

ここでは、1つのPolymerコンポーネントで複数のテンプレートを使用し、属性に基づいて特定のテンプレートに解決する方法を理解しようとしています。Polymer:属性に基づいて、同じコンポーネントの複数のテンプレート?

ここではシナリオです:

結果 期待

コンポーネント

<dom-module id="py-test"> 
    <template> 
     Foo 
    </template> 
    <template> 
     Bar 
    </template> 
    <script> 
     Polymer({ 
      is: "py-test" 
     }) 
    </script> 
</dom-module> 

マークアップ

<py-test bar></py-test> 

<py-test></py-test>はバーの属性を持っている場合、コンポーネントは2番目のテンプレートを使用する必要があります。それ以外の場合は、最初のテンプレートを使用する必要があります。

誰もがPolymerを提出する方法についての手掛かりを持っていますか?

//編集

マリアは、可能な解決策として、DOM-IFを指摘しました。これは仕事の種類です。私は、DOM-かのチェックを追加するには、上記の例を使用:

<dom-module id="py-test"> 
    <template> 
     <template is="dom-if" if="[[foo]]"> 
      Foo 
     </template> 
     <template is="dom-if" if="[[bar]]"> 
      Bar 
     </template> 
    </template> 
    <script> 
     Polymer({ 
      is: "py-test", 
      properties: { 
       foo: { 
        type: Boolean, 
        value: true 
       }, 
       bar: { 
        type: Boolean, 
        value: false 
       } 
      } 
     }) 
    </script> 
</dom-module> 

をしかし、私は<py-test>要素自体に設定された属性でこれを結びつけることができますどのように表示されません。

+1

'dom-if'をオプションとして使用しますか? – Maria

+0

@Maria特定の関数の真実性をチェックすることによって、テンプレート間を切り替えることができるという意味で、dom-ifで扱えることがあります。しかし、それはマークアップ要素に設定された特定の属性にこれらのブール値の結果をどのように結びつけることができないか分からないため、あまり役に立ちません。何か案は? –

+0

多分これはあなたが探しているものです。[iron-lazy-pages](https://github.com/TimvdLippe/iron-lazy-pages)。 Polymer.Templatizerの動作を使用して、属性に基づいてテンプレートをスタンプします –

答えて

2

ほとんどの場合、編集中です。 propertiesオブジェクトの初期値を削除するだけです。

<dom-module id="py-test"> 
    <template> 
     <template is="dom-if" if="[[foo]]"> 
      Foo 
     </template> 
     <template is="dom-if" if="[[bar]]"> 
      Bar 
     </template> 
    </template> 
    <script> 
     Polymer({ 
      is: "py-test", 
      properties: { 
       foo: { 
        type: Boolean, 
       }, 
       bar: { 
        type: Boolean, 
       } 
      } 
     }) 
    </script> 
</dom-module> 

あなたは、このようにそれを使用することができます:

<py-test foo></py-test> 
<py-test bar></py-test> 

ここplunkです。

Polymerがブール属性をどのように処理するかは、少し混乱することがあります。それらが存在する場合、関連するプロパティはtrue、それ以外の場合はfalseです。初期値を設定すると、それを妨害しています。

+0

優秀な説明。確かに、Polymerはその癖がありますが、ほとんどのフレームワークはとにかく行います。ありがとうございました! –

関連する問題