将事件传递到 Aurelia 自定义元素
Pass event through to Aurelia custom element
我有一个号召性用语(CTA(,它有一个连锁反应,由一个名为click-ripple
的自定义元素提供,类似于谷歌材料设计。名为 click-ripple
的自定义元素在 CSS 中有一个规则来防止此元素可点击:
pointer-events: none;
如果我不添加此规则,该元素将位于其父元素之上,并且不会将用户链接到正确的页面,或者它不会执行正确的操作。有没有办法将事件从父级馈送到它的子级之一,而不会有太多麻烦?
编辑
假设页面上有一个由锚标签组成的按钮。该锚标记的标记如下所示:
<template>
<a href="https://www.google.com">
<click-ripple></click-ripple>
</a>
</template>
我的问题是:将点击操作从锚标记转发到 click-ripple
元素的有效方法是什么?
答案是将事件侦听器添加到当前元素的父元素。在W3规范中查找它,我得出的结论是我需要使用element.parentElement
。
咔嚓咔嚓.js
//Shortened for everyone's sanity
export class ClickRipple {
constructor(CssAnimator, Element) {
this.animator = animator;
this.element = element;
}
attached() {
this.element.parentElement.addEventListener("click", (event) => {
this.playAnimation(event);
});
}
playAnimation(event) {
//Math based on event
//Animation with Aurelia's CssAnimator
}
}
向元素添加行为(例如点击波纹(的常用方法是使用自定义属性:<parent click-ripple></parent>
。
否则,以下是将事件传递给任意元素的方法:
点击通过自定义属性.js
import {inject} from 'aurelia-framework';
@inject(Element)
export class ClickThroughCustomAttribute {
constructor(element) {
this.element = element;
this.handler = event => this.value.dispatchEvent(event);
}
attached() {
this.element.addEventListener('click', this.handler);
}
detached() {
this.element.removeEventListener('click', this.handler);
}
}
<require from="click-through-custom-attribute"></require>
<button ref="button1>I'm Behind</button>
<button click-through.bind="button1">I'm In Front</button>
如果您知道要将点击传递给的元素始终是父元素,则可以在点击波纹自定义元素中执行以下操作:
import {inject} from 'aurelia-framework';
@inject(Element)
export class ClickRipple {
constructor(element) {
this.element = element;
this.handler = event => this.element.parentElement.dispatchEvent(event);
}
attached() {
this.element.addEventListener('click', this.handler);
... add click ripple behavior ...
}
detached() {
... remove click ripple behavior ...
this.element.removeEventListener('click', this.handler);
}
}
相关文章:
- 如何在 Aurelia(奥雷利亚)中访问自定义元素中的变量
- 当.js和.html不在同一文件夹中时,如何在Aurelia中创建自定义元素
- Aurelia单元测试-如何模拟自定义解析器
- Aurelia-仅HTML自定义元素的内联定义
- 手动编译由 aurelia 中的其他自定义元素组成的 dom 元素
- 在 aurelia 中使用 repeat.for 绑定自定义元素的正确方法是什么
- 使用 Aurelia在视图中动态生成自定义组件
- Aurelia 自定义属性中的双向绑定
- 更新 Aurelia 自定义属性中的绑定
- 将事件传递到 Aurelia 自定义元素
- Aurelia:绑定文本自定义元素的内容
- 如何使用路由器和内置/自定义属性在aurelia中创建下拉菜单
- aurelia自定义元素date-nifty日期选择器在更新时更新值
- Aurelia-按名称呈现自定义元素
- Aurelia-dialog在自定义元素上使用attach-focus
- 如何在Aurelia应用程序中使用外部自定义元素(插件)
- 从无容器自定义元素——Aurelia中获取类列表
- 如何让Aurelia在向DOM动态添加自定义元素后呈现我的视图
- Aurelia自定义元素实例创建
- 自定义元素中的Aurelia双向绑定不起作用