我有一个非常简单的聚合物元素,有点像这样:
<polymer-element name="pictures-list">
<template>
<h2>
<span id="pictitle">{{pictures.title}}</span>
</h2>
<input type="button" class="btn-hello" onclick="alert('hello');" value="Say Hello" />
<paper-button class="btn-paper-hello" on-tap="{{tap}}" >flat button</paper-button>
</template>
<script>
Polymer({
tap: function() {
console.log("tapped");
this.$.pictitle.textContent = "Test"
}
});
</script>
</polymer-element>
以下是托管方式:
<body unresolved>
<div class="container">
<pictures-list></pictures-list>
</div>
</body>
我想要实现的是以某种方式从外部提升click / tap事件(为了测试我的组件。由于ShadowDOM,你无法直接访问元素,但是你可以编写这样的选择器,到达输入或纸质按钮元素:
$("body > .container /deep/ .btn-hello")
或
$("body > .container /deep/ .btn-paper-hello")
现在,我可以在输入(html按钮)上执行click功能,并执行点击处理程序(显示警告),如下所示:
$("body > .container /deep/ .btn-hello").click();
我想基本上做同样的事情,但对于纸质按钮。如果我在纸张按钮上使用点击事件,但是不能点击,它就会起作用。所以这些不起作用:
$("body > .container /deep/ .btn-paper-hello").tap();
这个也不起作用:
$("body > .container /deep/ .btn-paper-hello").ontap();
我的问题是,我该怎么做?我可以执行fire函数,给它一个事件的名称,这会给我一个CustomeEvent对象,但是,它仍然没有被执行,例如:
$("body > .container /deep/ .btn-paper-hello").fire("on-tap")