我知道click.delegate
以及click
工作正常。但是,如果我想分配一个el.addEventListener('click', function (e) {
if (e.target === el) {
// continue...
}
else {
// el wasn't clicked directly
}
});
事件,只有在点击具有该属性的确切元素时才会触发该怎么办?
我可能会做这样的事情,因为它是“正常的”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>
我正在使用它:
toggleOpen()
(在此模板的viewModel中,当从自定义属性调用时,this
方法的ClickTargetCustomAttribute
为click-target.bind="functionName"
。)
我也希望click.target="functionName()"
可以改为@Configuration
@EnableAutoConfiguration
@SpringBootApplication
class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Bean
public SpringCamelContext camelContext(ApplicationContext applicationContext) throws Exception {
SpringCamelContext camelContext = new SpringCamelContext(applicationContext);
camelContext.addRoutes(routeBuilder());
return camelContext;
}
@Bean
public RouteBuilder routeBuilder() {
return new MyRouteBuilder();
}
}
,就像本地的一样。
答案 0 :(得分:5)
只需像click.delegate="toggleOpen($event)"
一样使用smth。
$event
是触发事件,因此您可以在toggleOpen
toggleOpen(event) {
// check event.target here
}
您还可以将模板上下文中提供的任何其他值传递给toggleOpen
。