我在項目上使用Polymer。我有一個封裝我整個項目的常規自定義元素,我們稱之爲<my-app></my-app>
。我希望每當一個按鈕(<paper-button>
,<paper-item>
,<my-custom-clickable-item>
,...)播放一個聲音。播放聲音沒有問題,但我不知道如何有效地將函數綁定到所需的所有元素。使用Javascript綁定函數來隱藏DOM和自定義元素
我知道有一種方法可以fire custom events,但如果<my-custom-clickable-item>
將是另一個元素<another-custom-element>
裏面,我需要在那裏抓住它,並通過它傳遞給<my-app>
,這是不是一個真正的好的解決方案。
除了僅將聲音綁定到按鈕之外,根據項目是否具有disabled
屬性將會播放另一個聲音是理想的。
以下是我的應用程序外觀的一些示例代碼。
<polymer-element name="my-app">
<template>
<audio id="mySound" style="display: none;">
<source src="assets/mySound.wav" type="audio/wav">
</audio>
<paper-button>I make sound!</paper-button>
<my-custom-clickable-item>I make sound as well!</my-custom-clickable-item>
<paper-button disabled>I should make another sound though...</paper-button>
<just-another-element></just-another-element>
</template>
<script>
Polymer('my-app', {
makeNoise: function(){
this.$.mySound.play();
}
});
</script>
</polymer-element>
<polymer-element name="just-another-element">
<template>
<p>I am another custom element, with other buttons!</p>
<paper-button>Sound sound sound</paper-button>
</template>
<script>
Polymer();
</script>
</polymer-element>
如果你的會觸發一個事件,它會冒泡到您的應用程序的根目錄或。如果您在我的應用程序上設置了偵聽器並在中激發了自定義事件,則中的偵聽器應該可以捕獲它。 –
andrsnn
@ user2210274:以及''中的''(或其他)怎麼樣? –
jdepypere
由於您希望播放不同的聲音,因此您可以在用正確的聲音觸發事件時附加自定義對象,然後在父元素中以相同的方式處理它。 'var temp = {sound ='path'}; this.fire('customEvent',temp);' – andrsnn