2017-12-14 21 views
0

この場合、DOMまたはコンポーネントツリーを移動するPolymerの方法は何ですか?Polymer 2.0は子コンポーネントから親コンポーネントにアクセスします

<parent-component> 
    <some-component> 
    <component-i-am-starting-from></<component-i-am-starting-from> 
    </some-component> 
<some-other-component> 
</some-other-component> 
</parent-component> 

深いネストされたコンポーネントを参照して、親コンポーネントとそのモデルを参照したり、そのいずれかの内部でイベントをトリガしたいと考えています。私は兄弟のコンポーネントにアクセスできる場合はボーナスなどダウン旅行

は私がにdispatchEvent、domHost、shadowRootを試してみました

this.$.idOfChildComponent.event() 

と十分に簡単だった、コンポーネントツリーまでの任意の更なるように見えることはできませんその後、直接親であるか、何かが定義されていない、関数でないなどのエラーが返ってきます。

参照がプロパティとして渡されるような方法はありますか?ドキュメントはインターネットに役立たず、精練していないようです。

ありがとうございます!

更新

だから私は、これは正しい方法であるかどうかわからないのですが、それは子関数から親関数を呼び出して[OK]を動作します。

<parent-component id="parentComponent"> 
    <some-component> 
    <component-i-am-starting-from></<component-i-am-starting-from> 
    </some-component> 
<some-other-component> 
</some-other-component> 
</parent-component> 

componentIAmStartingFromFunc(){ 
document.getElementById('parentElement').parentElementFunc() 
} 

ただし、兄弟にとってはうまくいかないようですか?

**アップデート** 私は基本的に同じことを、子の1人から親を呼び出すことによって兄弟イベントを呼び出すようにしてから、子コンポーネントでもある兄弟にトリガーを送りました。

+0

希望はあなたの必要性に合います。あなたがもっと必要な場合は、私に知らせてください。 – HakanC

答えて

0

this.parentElementを試しましたか?

自分自身に質問してください:にspanだった場合、どうすればdivになるのですか?

あなたは、セレクタによって祖先チェーン内の特定の要素を検索したい場合は、別の答えに記載されたメッセージシステムが動作することができます良いのブラウザで.closest()またはhttps://github.com/jonathantneal/closest

を使用することができますが、位置関係のお手伝いをしません。私はあなたの質問が必要としていたと推測しています。 idsやオブジェクトを渡すことは、場合によってはメッセージと共に使用することができます。

+0

私は単純なJavascriptでノードツリーを上げることができると理解していますが、コンポーネントを参照するPolymerの方法があると仮定しています。深くネストされたコンポーネントから最後にやりたいことは、 "this.parentElement.parentElement.parentElement"です。ハックのように見え、ポリマーチームが意図しているとは想像もできません。 – NicholasByDesign

+0

ポリマーターゲットは、このような上方構造依存性結合を伴うケースを使用するとは思いません。 – Mike

1

子から親関数を呼び出す。

子component.html(ポリマー2.xの)

this.dispatchEvent(new CustomEvent('upway-func', {detail: {op:"Optionally I can send some data"}})); 

子component.html(ポリマー1.1)

this.fire('upway-func', {detail: {op:"Optionally I can send some data"}}); 

親コンポーネント。HTML

... 
<child-component on-upway-func='_someFunction'></child-component> 

... 
_someFunction(d){ 
    console.log(d.detail.op); // "Optionally I can send some data" 
} 

ここthis link詳細については答え以下

関連する問題