2

有没有办法在 Lit-Element/Polymer 中创建自定义事件,例如鼠标悬停事件?我一直在寻找这个,但我似乎可以找到一种方法。我知道 Lit-Element 中的事件,例如 @click,但对鼠标悬停事件一无所知。

4

2 回答 2

4

这可以使用 lit-html@event绑定来完成。

对于mouseover事件类型,使用@mouseover="${this.handleMouseover}"

有关 lit-element 事件侦听器的更多信息,请参阅 https://lit-element.polymer-project.org/guide/events

现场示例:

<script src="https://unpkg.com/@webcomponents/webcomponentsjs@latest/webcomponents-loader.js"></script>
<script type="module">
  import { LitElement, html, css } from 'https://unpkg.com/lit-element/lit-element.js?module';
  
  class MyElement extends LitElement {
    static get styles() {
      return [
        css`
          span {
            padding: 4px 8px;
            border: 2px solid orange;
          }
        `
      ];
    }
    
    render() {
      return html`
        <span
          @mouseover="${this.handleEvent}"
          @mouseleave="${this.handleEvent}">
          Hover me
        </span>
      `;
    }
    
    handleEvent(e) {
      console.log(`Event type: ${e.type}`);
    }
  }
  customElements.define('my-element', MyElement);
</script>
<my-element></my-element>

于 2019-12-31T00:37:40.953 回答
1

所以我只是想通了,如果有人有同样的困难,就在这里发帖。

您必须使用 CustomEvents,这里有一些代码示例:

在元素的 firstUpdate 方法中,您应该添加一个新的 EventListener

firstUpdated(){
    this.addEventListener('mouseover', this.mouseOverHandler);
}

并声明方法

   mouseOverHandler(){
       console.log('Hello');
}

就那么简单!!!

于 2019-03-13T00:11:48.387 回答