Polymer 2.0:侦听器不工作 :主持人{ 显示:块; } #盒子{ 宽度:200px; 高度:100px; 边框:1px实心#000; } 你好,[[prop1]]! /**聚合反应*/ 类PolymerStarterkitApp扩展了Polymer.Element{ 静态get是(){return'polymer starterkit app';} 静态获取属性(){ 返回{ 建议1:{ 类型:字符串, 值:'聚合物起动器套件应用程序' }, 听众:{ “单击”:“常规” }, 常规:函数(){ console.log('regular') } }; } boxTap(){ console.log('boxTap') } } window.customElements.define(PolymerStarterkitApp.is,PolymerStarterkitApp);
如上面的代码所示,我试图用类框在我的div上定义一个简单的侦听器,但它似乎不起作用! 我想我使用了错误的语法。 另外,如果我们可以简单地使用预定义的监听器,比如点击和点击,那么为什么要使用监听器呢?Polymer 2.0:侦听器不工作 :主持人{ 显示:块; } #盒子{ 宽度:200px; 高度:100px; 边框:1px实心#000; } 你好,[[prop1]]! /**聚合反应*/ 类PolymerStarterkitApp扩展了Polymer.Element{ 静态get是(){return'polymer starterkit app';} 静态获取属性(){ 返回{ 建议1:{ 类型:字符串, 值:'聚合物起动器套件应用程序' }, 听众:{ “单击”:“常规” }, 常规:函数(){ console.log('regular') } }; } boxTap(){ console.log('boxTap') } } window.customElements.define(PolymerStarterkitApp.is,PolymerStarterkitApp);,polymer,polymer-2.x,Polymer,Polymer 2.x,如上面的代码所示,我试图用类框在我的div上定义一个简单的侦听器,但它似乎不起作用! 我想我使用了错误的语法。 另外,如果我们可以简单地使用预定义的监听器,比如点击和点击,那么为什么要使用监听器呢? 我真的很感激任何类型的帮助 必须手动创建侦听器 <dom-module id="polymer-starterkit-app"> <template> <style> :host { display: block;
我真的很感激任何类型的帮助 必须手动创建侦听器
<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之类的元素添加侦听器,需要添加Polymer.GestureEventListeners
connectedCallback() {
super.connectedCallback();
this.addEventListener('click', this.regular.bind(this));
}
disconnectedCallback() {
super.disconnetedCallback();
this.removeEventListener('click', this.regular);
}
regular() {
console.log('hello');
}
编辑:我帮助更新Polymer的文档。现在已经非常清楚和详细了。只要读一读就行了。TL;DR:Polymer 2.0中不再有listeners对象,但有一种新的方法可以实现它
您只需在
ready()
中设置它们即可。在这种情况下不需要使用.bind()
,因为此
将是回调中的自定义元素,因为它是事件的当前目标
ready(){
super.ready()
this.addEventListener('my-event',this.\u onMyEvent)
}
_onMyEvent(事件){/*…*/}
如果需要侦听非自定义元素本身(例如窗口
)上的事件,请按照文档中显示的方式执行:
constructor(){
超级();
this.\u boundListener=this.\u myLocationListener.bind(this);
}
connectedCallback(){
super.connectedCallback();
window.addEventListener('hashchange',this.\u boundListener);
}
disconnectedCallback(){
super.disconnectedCallback();
removeEventListener('hashchange',this.\u boundListener);
}
来源:侦听器不是从Polymer 2.0中的
属性安装的-您需要通过addEventListener
明确/强制地侦听它们。其次,监听器需要通过窗口.DispatchEvent(e)
调用显式激发。如果您只想通过单击触发一个方法,则不需要侦听器。只需单击“myMethod”
即可执行。你最好的选择是在黑暗中阅读而不是像你那样写代码。你关于Polymer 2.0的其他问题表明你根本没有阅读文档就提问。我为这些蹩脚的问题道歉,我对web开发非常陌生。事实上,我已经尝试阅读了很多次文档,但对我来说太复杂了。我对js有一个基本的了解,但我一直在努力学习聚合物。在再次尝试之前,您能为我提供一些参考资料吗?或者请查看我创建的这个新问题:也许您需要先开始阅读Web开发的基础知识(什么是DOM,什么是数据绑定等,什么是事件),然后再阅读文档。您的另一个问题不适合S.O。此代码有一个错误:This.regular.bind(This)
创建了一个新函数,因此This.removeEventListener('click',This.regular)
不会删除侦听器,因为This.regular
没有侦听器。它用于this.regular.bind(this)
返回的内容。修复:将函数存储在属性中。
class PolymerStarterkitApp extends Polymer.GestureEventListeners(Polymer.Element) {
}