Aurelia`click`属性,该属性要求事件目标与元素相同

Aurelia`click`属性,该属性要求事件目标与元素相同,aurelia,Aurelia,我知道click.trigger和click.delegate工作正常。但是,如果我想分配一个click事件,该事件只应在具有该属性的确切元素被单击时触发,该怎么办 如果是“正常”JS,我可能会这样做: 是否已经存在这样的属性,或者我需要自己创建一个属性?如果是这样,我希望它与其他类似,比如click.target=“someMethod()”。我怎样才能做到这一点 编辑:我尝试过这个方法,但不起作用,因为回调函数的this指向自定义属性类,而不是使用属性类的元素 import { inject

我知道
click.trigger
click.delegate
工作正常。但是,如果我想分配一个
click
事件,该事件只应在具有该属性的确切元素被单击时触发,该怎么办

如果是“正常”JS,我可能会这样做:

是否已经存在这样的属性,或者我需要自己创建一个属性?如果是这样,我希望它与其他类似,比如
click.target=“someMethod()”
。我怎样才能做到这一点

编辑:我尝试过这个方法,但不起作用,因为回调函数的
this
指向自定义属性类,而不是使用属性类的元素

import { inject } from 'aurelia-framework';

@inject(Element)
export class ClickTargetCustomAttribute {
    constructor (element) {
        this.element = element;

        this.handleClick = e => {
            console.log('Handling click...');

            if (e.target === this.element && typeof this.value === 'function') {
                console.log('Target and el are same and value is function :D');

                this.value(e);
            }
            else {
                console.log('Target and el are NOT same :/');
            }
        };
    }

    attached () {
        this.element.addEventListener('click', this.handleClick);
    }

    detached () {
        this.element.removeEventListener('click', this.handleClick);
    }
}
我是这样使用它的:

<div click-target.bind="toggleOpen">
    ....other stuff...
</div>

……其他东西。。。
(在该模板的viewModel中,当从自定义属性调用时,
toggleOpen()
方法的
this
ClickTargetCustomAttribute


我还希望如果
单击target.bind=“functionName”
可以改为
单击.target=“functionName()”
,就像本地的一样。

只需使用smth,就像
单击.delegate=“toggleOpen($event)”
$event
是触发事件,所以您可以在toggleOpen中处理它

toggleOpen(event) {
    // check event.target here
}

您还可以将模板上下文中可用的任何其他值传递到
toggleOpen

您可以使用
click.delegate=someMethod($event)
,然后检查$event objectHmm,我尝试了这一点,但我得到的不是
ClickEvent
,而是
MouseEvent
。我想这并不重要,因为
事件。target
仍然正确。但是,这种方法让我恼火的一点是,我需要两个单独的toggleOpen:一个是要求事件目标与单击的元素相同,另一个是行为与正常类似。我还需要一个属性被分配到的元素的引用。在我看来,它并不是很有活力。难道没有办法创建类似于单击的东西吗?target=“toggleOpen()只有在
e.target===el
时才会触发
toggleOpen()
?您可以使用
toggleOpen()
正常情况下,在这种情况下,您会得到正常行为的
空值事件。好吧,这是真的,我可以检查是否传入了事件,如果传入,则检查目标。但是是否有任何方法可以访问具有属性的元素而不使用
ref
?因为如果我使用
ref
开关打开
将被硬编码为该元素.iykwim您可以尝试传递
ref
值,如
另一个选项是修复
ClickTargetCustomAttribute
中的
toggleOpen
处理程序的上下文,尝试
其中,
让toggleOpenBinded=toggleOpen.bind(需要的上下文)
toggleOpen(event) {
    // check event.target here
}