【发布时间】:2015-03-11 05:08:37
【问题描述】:
这里有点麻烦。我需要单击我拥有的图像播放音频文件。在我的模板中设置了一堆图像及其对应的音频文件(有效):
<template>
<div layout horizontal wrap center center-justified class="asdf">
<template repeat="{{s in carddata}}">
<sound-card>
<img src="{{s.imgurl}}" on-click="{{playaudio}}">
<span>{{s.quote}}</span>
<audio id="{{s.soundId}}" src="{{s.soundurl}}" controls preload="auto" autobuffer></audio>
</sound-card>
</template>
</div>
</template>
我将音频元素设置为display: none,因此当您单击图像时,它只会播放音频而不是播放按钮。到目前为止,一切都很好,但是!这个模板的所有值都存储在这个数组中:
<script>
Polymer('card-container', {
carddata: [],
ready: function() {
this.carddata = [
{imgurl: '../www/img/soundcard-imgs/img1.jpg', quote: 'What?', soundurl: '../www/card-sounds/sound1.m4a', soundId: 'sound1'},
{imgurl: '../www/img/soundcard-imgs/img2.jpg', quote: 'Tickle tickle!', soundurl: '../www/card-sounds/sound2.m4a', soundId: 'sound2'}
];
},
playaudio: function() {
var audioId = //need to get ID here somehow
audioId.play();
}
});
</script>
如您所见,我需要获取特定 <sound-card> 的 {{s.soundId}} 并将其传递给 playaudio 函数,以便为正确的图像播放正确的声音。我一直在寻找,但找不到获取数组数据绑定生成的 id 的方法。
有什么建议吗?谢谢!
【问题讨论】:
-
不能把声音ID作为图片标签的属性吗?然后会在点击事件中发送(playaudio:function(event){...})
标签: javascript data-binding polymer shadow-dom