<dom-module id="polymer-starterkit-app">
<template>
<style>
:host {
display: block;
}
#box{
width: 200px;
height: 100px;
border: 1px solid #000;
}
</style>
<h2>Hello, [[prop1]]!</h2>
<paper-input label="hello">
</paper-input>
<div id="box" on-click="boxTap"></div>
</template>
<script>
/** @polymerElement */
class PolymerStarterkitApp extends Polymer.Element {
static get is() { return 'polymer-starterkit-app'; }
static get properties() {
return {
prop1: {
type: String,
value: 'polymer-starterkit-app'
},
listeners:{
'click':'regular'
},
regular:function(){
console.log('regular')
}
};
}
boxTap(){
console.log('boxTap')
}
}
window.customElements.define(PolymerStarterkitApp.is, PolymerStarterkitApp);
</script>
</dom-module>
如上面的代码所示,我尝试使用类框在我的div上定义一个简单的监听器,但它似乎不起作用! 我想我使用了错误的语法。 另外,如果我们可以简单地使用预定义的监听器,如点击和点击,我们为什么要使用监听器呢? 我真的很感激任何类型的帮助!
答案 0 :(得分:5)
编辑:我帮助更新了Polymer的文档。它现在非常清晰和详细。 https://www.polymer-project.org/2.0/docs/devguide/events#imperative-listeners只需阅读一下即可。 TL; DR:在Polymer 2.0中,侦听器对象已不复存在,但是有了一种新的方法。
您只需在ready()
中进行设置即可。在这种情况下无需使用.bind()
,因为this
将成为回调中的自定义元素,因为它是事件的当前目标。
ready () {
super.ready()
this.addEventListener('my-event', this._onMyEvent)
}
_onMyEvent (event) { /* ... */ }
如果您需要侦听不属于自定义元素的事件(例如window
),请按照Polymer文档中显示的方式进行操作:
constructor() {
super();
this._boundListener = this._myLocationListener.bind(this);
}
connectedCallback() {
super.connectedCallback();
window.addEventListener('hashchange', this._boundListener);
}
disconnectedCallback() {
super.disconnectedCallback();
window.removeEventListener('hashchange', this._boundListener);
}
来源:https://www.polymer-project.org/2.0/docs/devguide/events#imperative-listeners
答案 1 :(得分:-1)
您必须手动创建侦听器
connectedCallback() {
super.connectedCallback();
this.addEventListener('click', this.regular.bind(this));
}
disconnectedCallback() {
super.disconnetedCallback();
this.removeEventListener('click', this.regular);
}
regular() {
console.log('hello');
}
但是,要向像div这样的元素添加侦听器,需要添加Polymer.GestureEventListeners
class PolymerStarterkitApp extends Polymer.GestureEventListeners(Polymer.Element) {
}