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 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;

如上面的代码所示,我试图用类框在我的div上定义一个简单的侦听器,但它似乎不起作用! 我想我使用了错误的语法。 另外,如果我们可以简单地使用预定义的监听器,比如点击和点击,那么为什么要使用监听器呢?
我真的很感激任何类型的帮助

必须手动创建侦听器

<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) {

}