单个事件上的多个事件处理程序.Trigger或event.delegate

Multiple event handlers on a single event.trigger or event.delegate?

本文关键字:Trigger 程序 event delegate 事件处理 事件 单个      更新时间:2023-09-26

我正在努力将PDF.JS与Aurelia集成,并且我有两个方法,我想在响应scroll事件时运行。通常,我会将这两个函数合并到一个方法中。然而,对于我的用例,我需要为每个方法使用不同的绑定行为。

我有一个renderHandler,我想和scroll.trigger一起使用,像这样:

<div ref="container" class="pdf-container" scroll.trigger="renderHandler() & debounce:250">

然而,我也有另一个scrollHandler(它,而不是处理渲染事件,现在将只处理值绑定更新,如滚动时的页码),我想使用油门行为,像这样:

<div ref="container" class="pdf-container" scroll.trigger="scrollHandler & throttle">

单独工作。我不知道怎么把它们联系起来。Aurelia目前不允许在triggerdelegate表达式中使用多个表达式,并且在元素中复制属性没有效果(因为在Aurelia的解析过程中复制的属性可能会被破坏)。

是否有一种方法可以声明性地使用具有不同绑定行为的两个处理程序来处理同一事件?

框架目前不支持对同一事件、元素和绑定命令组合进行多个事件绑定。

作为一种解决方法,您可以添加一个trigger2绑定命令:
import {SyntaxInterpreter} from 'aurelia-templating-binding';
SyntaxInterpreter.prototype.trigger2 = SyntaxInterpreter.prototype.trigger;

那么你就可以在同一个元素上使用scroll.triggerscroll.trigger2了。

的例子:https://gist.run/?id=b51e1c0ff28de5d19d1018881399c4e4

我不知道它在哪个版本可用。但是这个语法可以工作。

<button click.delegate="[click1(), click2()]">multiple click handlers</button>