Ionic Framework 保持点击事件
Ionic Framework hold click event
是否可以将按钮分配给 TypeScript 中的 "hold click" 事件?
喜欢:
<button ion-button icon-only color="royal" (click)="addNote()" (holdclick)="removeNote()">
您可以使用 press
事件(更多信息在 Gestures docs):
import { Component } from '@angular/core';
@Component({
templateUrl: 'template.html'
})
export class BasicPage {
public press: number = 0;
constructor() {}
pressEvent(e) {
this.press++
}
}
并且在视图中:
<ion-card (press)="pressEvent($event)">
<ion-item>
Pressed: {{press}} times
</ion-item>
</ion-card>
如果这还不够(您的方案中可能需要更长的按下事件),您可以通过创建自定义指令来创建自己的手势事件。可以在 this amazing article by roblouie 中找到更多信息。本文使用旧版本的 Ionic,但主要思想仍然相同(几乎所有代码都应该像现在这样工作):
import {Directive, ElementRef, Input, OnInit, OnDestroy} from '@angular/core';
import {Gesture} from 'ionic-angular';
@Directive({
selector: '[longPress]'
})
export class PressDirective implements OnInit, OnDestroy {
el: HTMLElement;
pressGesture: Gesture;
constructor(el: ElementRef) {
this.el = el.nativeElement;
}
ngOnInit() {
this.pressGesture = new Gesture(this.el, {
recognizers: [
[Hammer.Press, {time: 6000}] // Should be pressed for 6 seconds
]
});
this.pressGesture.listen();
this.pressGesture.on('press', e => {
// Here you could also emit a value and subscribe to it
// in the component that hosts the element with the directive
console.log('pressed!!');
});
}
ngOnDestroy() {
this.pressGesture.destroy();
}
}
然后在您的 html 元素中使用它:
<button longPress>...<button>
是否可以将按钮分配给 TypeScript 中的 "hold click" 事件?
喜欢:
<button ion-button icon-only color="royal" (click)="addNote()" (holdclick)="removeNote()">
您可以使用 press
事件(更多信息在 Gestures docs):
import { Component } from '@angular/core';
@Component({
templateUrl: 'template.html'
})
export class BasicPage {
public press: number = 0;
constructor() {}
pressEvent(e) {
this.press++
}
}
并且在视图中:
<ion-card (press)="pressEvent($event)">
<ion-item>
Pressed: {{press}} times
</ion-item>
</ion-card>
如果这还不够(您的方案中可能需要更长的按下事件),您可以通过创建自定义指令来创建自己的手势事件。可以在 this amazing article by roblouie 中找到更多信息。本文使用旧版本的 Ionic,但主要思想仍然相同(几乎所有代码都应该像现在这样工作):
import {Directive, ElementRef, Input, OnInit, OnDestroy} from '@angular/core';
import {Gesture} from 'ionic-angular';
@Directive({
selector: '[longPress]'
})
export class PressDirective implements OnInit, OnDestroy {
el: HTMLElement;
pressGesture: Gesture;
constructor(el: ElementRef) {
this.el = el.nativeElement;
}
ngOnInit() {
this.pressGesture = new Gesture(this.el, {
recognizers: [
[Hammer.Press, {time: 6000}] // Should be pressed for 6 seconds
]
});
this.pressGesture.listen();
this.pressGesture.on('press', e => {
// Here you could also emit a value and subscribe to it
// in the component that hosts the element with the directive
console.log('pressed!!');
});
}
ngOnDestroy() {
this.pressGesture.destroy();
}
}
然后在您的 html 元素中使用它:
<button longPress>...<button>