2017-02-03 4 views
2

Ich bin schon Cordova-Plugin erstellt und bereits in Ionic 1 verwendet, funktioniert es gut. Dann habe ich versucht, es in Ionic 2 zu verwenden, aber ich weiß nicht wirklich, wie ich das Plugin nennen soll. Ich folge dem Schritt von here. Und das ist, was ich tat:Ionic 2: Wie benutzerdefinierte Build Cordova Plugin

plugin.xml

<name>myPlugin</name> 
<js-module src="www/myPlugin.js" name="myPlugin"> 
    <clobbers target="myPlugin" /> 
</js-module> 

myPlugin.js

module.exports = { 
    myFunction: function (success, failure) {   
    cordova.exec(success, failure, "myPlugin", "myFunction", []); 
    } 
}; 

hallo-ionic.ts

import { Component } from '@angular/core'; 
declare var cordova: any; 

@Component({ 
    selector: 'page-hello-ionic', 
    templateUrl: 'hello-ionic.html' 
}) 
export class HelloIonicPage { 
    constructor() { 

    } 

    click() { 

    if (typeof cordova !== 'undefined') { 
     cordova.plugins.myPlugin.myFunction(); 
    } 
    } 
} 

Es gibt mir einen Fehler "Undefined myFunction" in hello-ionic.ts. Danke für Ihre Hilfe.

+2

haben nicht erstellt benutzerdefiniertes plugin .. aber Sie sollten Plugin-Code in 'Platform.ready()' –

+0

@suraj kapseln Ich bin bereits die 'Platform.ready()' hinzugefügt, aber es immer noch mir die gleichen Fehler 'Typ Fehler: Kann die Eigenschaft 'myFunction' von undefined nicht lesen. –

+0

Haben Sie versucht, mit declare var myPlugin: any; und myPlugin.myFunction() anstelle von cordova.plugins.myPlugin.myFunction(); – AishApp

Antwort

4

Hier ist was ich getan habe.

hallo-ionic.ts

import { Component } from '@angular/core'; 
declare var myPlugin: any; 

@Component({ 
    selector: 'page-hello-ionic', 
    templateUrl: 'hello-ionic.html' 
}) 
export class HelloIonicPage { 
    constructor() { 

    } 

    click() { 
    myPlugin.myFuntion(
     (data) => { 
     console.log(data); 
     }, 

     (err) => { 
     console.log(err); 
     }); 
    } 
} 

declare var myPlugin: any;, erhalten myPlugin Name, den ich von <clobbers target="myPlugin" />.

Hinweis: Sie müssen das Projekt nur im Gerät ausführen.

2

folgende Tutorial ist eine gute Ressource zu lernen, wie benutzerdefinierte cordova Plugin zu erstellen:

https://taco.visualstudio.com/en-us/docs/createplugintutorial/

ich dieses Tutorial verfolgt haben mehrere benutzerdefinierte Plug-Ins erstellen und diese arbeiten in Ionic2 in Ordnung.

Eine weitere Sache, darauf hinzuweisen, dass das Tutorial nicht erwähnt hat, dass:

Sie müssen Ihre benutzerdefinierte Plug-in Ihrem ionischen 2 Projekt mit folgendem Befehl hinzufügen:

ionic plugin add "folder path of your custom plugin"

Aktualisiert:

In Ihrer Datei plugin.xml haben Sie "myPlugin" als target in clobbers Tag festgelegt.

So sollten Sie Ihre Funktion aufrufen wie folgt

window.myPlugin.myFunction(); 

Tipp: Wenn Sie benutzerdefinierte Plugin von Ihnen (oder jemand anderes) erstellt verwenden, überprüfen Sie die Anwendung mit Chrome-Entwicklertools. In der Konsolenregisterkarte der Entwicklerwerkzeuge können Sie die window und andere verfügbare Objekte überprüfen und herausfinden, wie Sie die Methoden des Plugins richtig aufrufen.

+0

Vielen Dank, ich bin bereits diesem Tutorial gefolgt, um das Plugin zu erstellen. Ich habe genau wie Tutorial gemacht, aber es gibt mich mit demselben Fehler zurück Typfehler: Eigenschaft "getNextAppointment" von undefined kann nicht gelesen werden. –

+0

Hallo @sitiaishahmail, Es kann Probleme geben, wie Sie Ihre Funktion aufrufen. Überprüfen Sie meine aktualisierte Antwort. –

Verwandte Themen