Ionischen 2 - Einstellung Rückruf für "langes drücken" - Ereignis-Richtlinie

Ich versuche Sie zum hinzufügen einer benutzerdefinierten longPress event-Richtlinie über die Elemente, da (drücken)="callback_function()" führt zu Ionen-Liste werden nicht in der Lage, um zu Blättern nicht mehr. Bug oder nicht, ich habe herausgefunden, dass ich hinzufügen müssen, um eine Geste der Richtlinie, das wäre die Unterstützung für ein neues Attribut, in diesem Fall nenne ich es longPress. und es funktioniert Super, außer, dass ich nicht bekommen, wie Sie die Funktion Rückruf 🙂

Habe ich folgte ein tutorial (http://roblouie.com/article/198/using-gestures-in-the-ionic-2-beta/)

Den "press-Richtlinie" erstellt, in src/components/press-directive/press-directive.js und sieht wie folgt aus:

import { Directive, ElementRef, OnInit, OnDestroy } from '@angular/core';
import { Gesture } from "ionic-angular/gestures/gesture";

/**
 * Generated class for the PressDirective directive.
 *
 * See https://angular.io/docs/ts/latest/api/core/index/DirectiveMetadata-class.html
 * for more info on Angular Directives.
 */

@Directive({
  selector: '[longPress]' //Attribute selector
})


export class PressDirective implements OnInit, OnDestroy {
  el: HTMLElement;
  pressGesture: Gesture;

  constructor(el: ElementRef) {
    this.el = el.nativeElement;
  }

  public theCallback() {

  }

  ngOnInit() {
    this.pressGesture = new Gesture(this.el);
    this.pressGesture.listen();

    //instead of this..
    this.pressGesture.on('press', (event) => {
      console.log('pressed!!');
    });

    //i want the callback to come from the template like this:
    //<ion-col (longPress)="showActionSheet(object)">
  }

  ngOnDestroy() {
    this.pressGesture.destroy();
  }
}

In Hause.- Modul.ts ich habe die Richtlinie in einer import:

import { PressDirective } from "../../components/press-directive/press-directive";

und ich habe es in der Erklärung:

declarations: [
  Home,
  PressDirective
],

In home.html habe, dann setze ich es in eine wie diese:

<ion-col (longPress)="showActionSheet(relevantObject)">...

Habe ich heraus geschnitten, die meisten die unwichtigen Sachen 🙂

Und wenn ich eine Taste lange drücken, es wird Folgendes zurückgegeben:

console.log('pressed!!');

Aber ich kann nicht mein Kopf gewickelt, wie die Unterstützung der eigentlichen callback-Funktion aus dem template-element.

Jede Hilfe oder Hinweis wäre willkommen..

InformationsquelleAutor Steen Kruse | 2017-04-19
Schreibe einen Kommentar