2017-02-03 4 views
2

Я уже создал плагин cordova и уже используется в Ionic 1, он отлично работает. Затем я попытался использовать его в Ionic 2, но я действительно не знаю, как назвать этот плагин. Я следую шагу от here. И это то, что я сделал:Ionic 2: Как использовать пользовательскую сборку 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", []); 
    } 
}; 

привет-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(); 
    } 
    } 
} 

Он возвращает мне ошибку "Undefined myFunction" в hello-ionic.ts. Спасибо за помощь.

+2

havent создал пользовательский плагин .. но вы должны инкапсулировать код плагина в 'Platform.ready()' –

+0

@suraj Я уже добавил 'Platform.ready()', но он все равно возвращает мне ту же ошибку 'Type error: Невозможно прочитать свойство myFunction undefined'. –

+0

Вы пробовали использовать declare var myPlugin: any; и myPlugin.myFunction() вместо cordova.plugins.myPlugin.myFunction(); – AishApp

ответ

4

Вот что я сделал.

привет-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;, myPlugin имя я получаю от <clobbers target="myPlugin" />.

Примечание: необходимо выполнить проект только на устройстве.

2

После учебник хороший ресурс, чтобы узнать, как создавать пользовательские Cordova плагин:

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

Я следовал этот учебник, чтобы создать несколько пользовательских плагинов и те, которые работают хорошо в Ionic2. более

Одна вещь, чтобы указать на то, что учебник не упоминается, что:

Вы должны добавить свой собственный плагин в проекте ионную 2, используя следующую команду:

ionic plugin add "folder path of your custom plugin"

Обновлено:

В файле plugin.xml вы установили «myPlugin» как target в теге clobbers.

Таким образом, вы должны вызвать вашу функцию, как следует

window.myPlugin.myFunction(); 

Подсказка: Всякий раз, когда вы используете пользовательский плагин, созданный вами (или кто-то другой), проверить приложение с помощью Chrome инструменты для разработчиков. На вкладке консоли инструментов разработчика вы можете просмотреть window и другие доступные объекты и можете найти правильный способ вызова методов плагина.

+0

Спасибо, я уже следую этому учебнику, чтобы создать плагин. Я сделал точно так же, как и в учебнике, но он возвращает меня с той же ошибкой 'Type error: Невозможно прочитать свойство getNextAppointment 'undefined'. –

+0

Hi @sitiaishahismail, Возможно, проблема в том, как вы называете свою функцию. Проверьте мой обновленный ответ. –