Warm tip: This article is reproduced from serverfault.com, please click

javascript-单个 event.trigger 或 event.delegate 上的多个事件处理程序?

(javascript - Multiple event handlers on a single event.trigger or event.delegate?)

发布于 2016-08-25 18:18:40

我正在将 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 当前不允许在 a triggerordelegate表达式中使用多个表达式,并且在元素中复制该属性没有任何效果(因为在 Aurelia 的解析过程中,副本可能会被破坏)。

有没有办法对同一事件声明性地使用两个具有不同绑定行为的处理程序?

Questioner
jedd.ahyoung
Viewed
0
Jeremy Danyow 2016-08-27 01:07:22

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

作为解决方法,你可以添加trigger2绑定命令:

import {SyntaxInterpreter} from 'aurelia-templating-binding';
SyntaxInterpreter.prototype.trigger2 = SyntaxInterpreter.prototype.trigger;

然后你就可以在同一个元素上使用scroll.triggerscroll.trigger2

例子:

https://gist.run/?id=b51e1c0ff28de5d19d1018881399c4e4