2017-07-18 7 views
0

Je suis un nouveau venu dans IBM MobileFirst 8.0. Comment utiliser les fonctions IBM MFP (WL, WLResourceRequest) dans des projets ioniques 2?Comment utiliser les fonctions IBM MFP 8.0 (WL, WLResourceRequest) dans le développement ionique 2

J'ai créé un projet Ionic et ajouté un plugin MFP et j'ai ajouté les lignes ci-dessous dans le fichier Home Component TS.

WL.Client.setSharedToken({key: "name", value: "Karhik"}); 
    let str: String = WL.Client.getSharedToken({key: "name"}); 
    console.log(str); 

Mais je reçois l'erreur ci-dessous. Comment résoudre le problème Ou tout document donné de référence pour ionique 2 + IBM MFP 8.0

enter image description here

Et j'ai essayé de comme ça ci-dessous. Mais la même erreur est renvoyée,

Home.ts 

import { Component } from '@angular/core'; 
import { NavController } from 'ionic-angular'; 
import { Device } from '@ionic-native/device'; 

declare var wlCommonInit:() => { 

}; 

declare var WL; 

@Component({ 
    selector: 'page-home', 
    templateUrl: 'home.html', 
    providers: [ Device ] 
}) 
export class HomePage { 

    constructor(public navCtrl: NavController, private device: Device) { 
    console.log("device platform " + device.platform); 

    WL.Client.setSharedToken({key: "name", value: "Karhik"}); 
    let str: String = WL.Client.getSharedToken({key: "name"}); 
    console.log(str); 
    } 

    wlCommonInit() { 
    console.log("wlCommonInit TRIGGERED"); 

    } 

} 

Mais cela ne fonctionne pas. Je dois savoir comment utiliser IBM MFP 8.0 dans IONIC 2

Après avoir ajouté le code dans Main.ts Ci-dessous erreur est retournée dans la console.

enter image description here

+1

Cette erreur se produit si vous appelez des objets WL avant la fin de l'initialisation du plug-in MFP. Vous devez attendre que l'amorçage du MFP soit terminé pour ajouter tout code qui initialise les objets MFP - "WL" et autres. –

+0

Bonjour, Tout événement se déclenchera une fois l'amorçage du MFP terminé? ou Tout autre échantillon que vous avez s'il vous plaît poster pour ma référence. –

+1

Je vous suggère de mettre votre code dans wlcommoninit() –

Répondre

2

WL doit être chargé avant d'autres fichiers javascript pour les fonctions WL soient disponibles dans ces fichiers. L'initialisation de WL se produit dans wlcommoninit() (son utilisation peut être trouvée here). L'approche recommandée consiste à s'assurer que les autres fichiers js sont chargés dans cette fonction.

Une alternative pour surmonter ce problème est de s'assurer que les 3 scripts ci-dessous sont inclus avant les autres scripts js dans le HTML.

<script type="text/javascript" src="cordova.js"></script> 
<script type="text/javascript" src="js/platform.js"></script> 
<script type="text/javascript" src="js/main.js"></script> 
+0

Salut, Keerthi. J'utilise Ionic 2, Il n'y a que main.ts –

+1

Dans votre fichier ts, déplacez le WL.Client.setSharedKey() vers wlCommonInit. Un autre document que vous pouvez utiliser: https://mobilefirstplatform.ibmcloud.com/blog/2016/08/11/best-practices-for-building-angularjs-apps-with-mobilefirst-foundation-8.0/ –

+0

wlCommonInit() la fonction n'est pas déclenchée. @Vivin K –

1

Ajoutez la ligne suivante avant que les déclarations d'importation au lieu de déclarer WL et wlCommonInit.

/// <reference path="../../../plugins/cordova-plugin-mfp/typings/worklight.d.ts" />

Cela devrait résoudre le problème que vous faites face.