Polymer 事件

17 Mar 2025 | 4 分钟阅读

Polymer 事件被 Polymer 元素用来与 DOM 树的状态变化通信到父元素。Polymer 使用标准的 DOM API 来创建、分发和监听事件。

Polymer 使用带注解的事件监听器,并将它们定义为 DOM 模板的小块。可以使用模板中的 on-event 注释将它们添加到 DOM 子节点中。

添加事件监听器

有两种方法可以添加事件监听器

通过提供一个 listeners 对象,该对象将事件映射到事件处理函数名称,可以将事件监听器添加到宿主元素。

也可以使用以下语法将事件监听器添加到 this.$ 集合中的任何元素

示例

添加带注解的事件监听器

您可以使用模板中的 on-event 注释将事件监听器添加到本地 DOM 子节点。通过使用这种方法,您不需要给元素一个 id 来绑定事件监听器。

示例

添加和删除监听器

listen() 和 unlisten() 方法用于命令式地添加和删除监听器。

注意:如果以命令式方式添加了监听器,则必须以命令式方式删除它。这通常在 attached 和 detached 回调中完成。

如果使用 listeners 对象或带注解的事件监听器,Polymer 会自动添加和删除事件监听器。

自定义事件

您可以使用标准的 CustomEvent 构造函数和宿主元素的 dispatchEvent () 方法来触发或激发自定义事件。

让我们举个例子,从宿主元素触发一个自定义事件。创建一个名为 index.html 的文件,并在其中使用以下代码。

现在,创建另一个名为 custom-event.html 的文件,并在其中使用以下代码。

Polymer custom event

现在,在点击 "Click Here" 按钮后,您可以看到自定义事件的 true 值。

Polymer custom event 1

手势事件

手势事件用于使用户在触摸和移动设备上的交互更加愉快。例如:tap 事件是手势事件的一部分,它在移动和桌面设备上都能一致地触发。

以下是不同支持的手势事件类型列表

索引事件类型描述性质
1)downdown 事件类型用于指定手指/按钮已向下移动。x: 它提供事件的 clientX 坐标。
y: 它提供事件的 clientY 坐标。
sourceEvent: 它指定由 DOM 事件引起的向下动作。
2)upup 事件类型用于指定手指/按钮已向上移动。x: 它提供事件的 clientX 坐标。
y: 它提供事件的 clientY 坐标。
sourceEvent: 它指定由 DOM 事件引起的向上动作。
3)taptap 事件类型用于指定发生向上和向下动作。x: 它提供事件的 clientX 坐标。
y: 它提供事件的 clientY 坐标。
sourceEvent: 它用于指定由 DOM 事件引起的 tap 动作。
4)tracktrack 事件类型用于在手指/按钮按下时跟踪移动。x: 它用于提供事件的 clientX 坐标。
y: 它用于提供事件的 clientY 坐标。
state: 它是一个类型字符串,用于指定跟踪状态。
dx: 当您跟踪第一个事件时,它水平方向上以像素为单位进行更改。
dy: 当您跟踪第一个事件时,它垂直方向上以像素为单位进行更改。
ddx: 当您跟踪最后一个事件时,它水平方向上以像素为单位进行更改。
ddy: 当您跟踪最后一个事件时,它垂直方向上以像素为单位进行更改。
hover(): 它用于确定当前悬停的元素。

示例

让我们举个例子来演示在模板中使用手势事件类型。创建一个名为 index.html 的文件,并在其中使用以下代码。

创建另一个名为 gesture-event.html 的文件,其中包含以下代码。

输出

在元素中悬停并拖动鼠标,它将显示事件跟踪的进度,如下所示

Polymer Gesture event 1

当您停止拖动鼠标时,它将结束元素上的跟踪事件,如下所示

Polymer Gesture event 2
下一个主题Polymer 数据系统