2017-12-13 9 views
0

ボタンをクリックしたときに別のHTMLでファンクションを実行しようとしています。ファーリングポリマーファンクション

このようなルックスでボタンと私の最初のHTML:

<template> 
<paper-icon-button on-tap="_deleteConfigUsage"></paper-icon-button> 
</template> 

<script> 
Polymer({ 
is: "HTML1", 
_deleteConfigUsage: function(e){ 
this.fire('refreshUsagesRequest'); 
} 
}) 
</script> 

私の第二HTMLはその後、次のようになります。

<script> 
Polymer({ 
is: "HTML2", 
listeners:{ 
'refreshUsagesRequest': '_generateUsagesRequest' 
}, 
_generateUsagesRequest: function(e){ 
document.getElementById("getConfigurationUsagesRequest").generateRequest(); 
} 
}) 
</script> 

この転送に関わる3つのhtmlファイルがあります。最初のHTML、2番目のHTML、それらを呼び出すビューHTML。

アイコンをクリックしたときに2番目のHTMLの関数が実行されていないようです。リスナー内のすべてを正しく行ったことがありますか?最初の機能はイベントですか?

ありがとうございました

+0

まず、物事はまず、あなたの要素名は、[無効](https://www.polymer-project.org/2.0/docs/devguide/registering-elements)です。要素名として 'html1'や' html2'を使うことはできません。コンソールを開いてエラーをチェックしてから、他の操作を実行してください。 –

+0

これは例です。それらはhtml名ではなく、実際のファイル名のための埋め込み先です。 – devAds

+0

あなたの要素*兄弟*ですか?あるいは、 'html1'は' html2'の* parent *ですか? –

答えて

2

少なくとも2つ以上の単語が必要です。上記で説明したNicholasのように、x-htm1x-html2のようなハイフンでなければなりません。その場合。ポリマー1.xまたは2.xのために、この火災機能には違いがあります。あなたの場合、1.xバージョンを使用します。だから、主な目的は、別の要素の機能を発射することです。これはまた別の問題であることよりも、x-html2x-html1の子要素がある場合:あなたはid名を与える必要がありますし、両方の要素がメイン文書の子である場合は、しかし、

this.$.html2._generateUsagesRequest(); //html2 is id name of x-html2.html 

と子要素の機能を呼び出すことができます(それは縫い目。 1つの子要素から他の子要素の関数に呼び出すよりも)。

(x-main.html);

<x-html1 id="html1" on-refresh-usages-request='m_generateUsagesRequest'></x-html1> 
<x-html2 id="html2"></x-html2> 

Polymer({ 
is: "x-main", 
m_generateUsagesRequest(){ 
    this.$.html2._generateUsagesRequest(); 
} 

x-html1.html;

<template> 
<paper-icon-button on-tap="_deleteConfigUsage"></paper-icon-button> 
</template 
<script> 
    Polymer({ 
    is: "x-html1", 

    _deleteConfigUsage(e){ // let say u need to fires x-html2.html's function 
     this.fire('refresh-usages-request'); 

    } 
    }) 
    </script> 

at x-html2;

<script> 
Polymer({ 
is: "x-html2", 

_generateUsagesRequest(e){ 
    // Do something as this functions fires from x-html1 

} 
}) 
</script> 
+2

またはメイン文書がPolymer要素でない場合は、単純な 'document.querySelector( '#html1')を使用することができます。addEventListener( 'refresh-usages-request'、()=> {document.querySelector( '#html1' html2 ')._ deleteConfigUsage}) ' –