2017-01-02 1 views
1

J'ai déplacé la fonction showToast d'un contrôleur vers un service. L'objectif est de partager le code showToast entre différents contrôleurs et directives.window.plugins non défini dans un service

var services = angular.module("myapp.services"); 

services.service('toast', function($cordovaToast){ 

    this.showToast = function(msg) { 
    try { 
     window.plugins.toast.showWithOptions(
        { 
        message: msg, 
        duration: "long", // which is 2000 ms. "long" is 4000. Or specify the nr of ms yourself. 
        position: "bottom", 
        }, 
        {}, // optional 
        {} // optional 
       ); 
    } 
    catch(e) { 
     console.log(e); 
    } 
    }; 

}); 

Après le refactoring, je reçois le texte suivant:

TypeError: Cannot read property 'toast' of undefined at Object.showToast (ToastService.js:7) at ReportProblemModalController.js:77

Je ne sais pas comment exposer window.plugins dans un service.


EDIT

Je ne sais pas si cela aide:

"cordova-plugin-x-toast" 
{ 
     "variables": { 
     "FABRIC_API_KEY": "xxx", 
     "FABRIC_API_SECRET": "yyy" 
     }, 
     "locator": "cordova-fabric-plugin", 
     "id": "cordova-fabric-plugin" 
    } 
    ], 

... cependant, j'ai le sentiment que le prob est ailleurs, comme window.plugin n'est pas défini dans le service (et il y a d'autres plugins dans l'application).

+0

Quelle bibliothèque utilisez-vous pour cela? – Yaser

Répondre

1

modifier window.plugins.toast à $cordovaToast. showWithOptions est une méthode de $cordovaToast, pas window.plugins.toast bien sûr, il est montré dans le référentiel git. Je pense que cela doit être utilisé dans l'application Web angulaire, ne peut pas en ionique.

this.showToast = function(msg) { 
    try { 
     $cordovaToast.showWithOptions(
        { 
        message: msg, 
        duration: "long", // which is 2000 ms. "long" is 4000. Or specify the nr of ms yourself. 
        position: "bottom", 
        }, 
        {}, // optional 
        {} // optional 
       ); 
    } 
    catch(e) { 
     console.log(e); 
    } 
    }; 
+0

bien essayé, merci beaucoup. Mais ça ne fonctionne pas. 'TypeError: Impossible de lire la propriété 'toast' de undefined' – NoIdeaHowToFixThis

+0

Dans mon code, il n'y a pas de 'toast'. S'il vous plaît assurez-vous que –

+0

L'erreur en raison de la propriété 'toast' de undefined qui n'est pas dans mon code. Peut être votre erreur de type. juste vérifier pour cela –