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

时间:2016-08-25 18:18:41

标签: javascript aurelia

我正在努力将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解析期间副本可能会被破坏) )。

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

示例:

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

答案 1 :(得分:0)

我不知道它在哪个版本可用。 但这种语法有效。

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