2017-01-02 4 views
1

Ich habe die Funktion showToast von einem Controller zu einem Dienst verschoben. Ziel ist es, den showToast-Code über verschiedene Controller und Direktiven hinweg zu teilen.window.plugins undefined in einem Dienst

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); 
    } 
    }; 

}); 

Nach dem Refactoring, erhalte ich folgende:

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

Nicht sicher, wie window.plugins in einem Dienst zu belichten.


EDIT

Nicht sicher, ob das hilft:

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

... aber ich habe das Gefühl, das prob an anderer Stelle ist, wie window.plugin im Dienst nicht definiert ist (und Es gibt andere Plugins in der App).

+0

Welche lib verwenden Sie dafür? – Yaser

Antwort

1

ändern window.plugins.toast zu $cordovaToast. showWithOptions ist eine Methode von $cordovaToast, nicht window.plugins.toast natürlich ist es in der Git-Repository angezeigt. Ich denke, dass in eckigen Web-App verwendet werden soll, möglicherweise nicht in ionischen.

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

netter Versuch, vielen Dank. aber es funktioniert nicht. 'TypeError: Eigenschaft 'Toast' von undefined kann nicht gelesen werden – NoIdeaHowToFixThis

+0

In meinem Code gibt es kein 'Toast'. Bitte stellen Sie sicher, dass –

+0

Der Fehler wegen "Toast" -Eigenschaft von undefined, die nicht in meinem Code ist. Kann dein Typfehler sein. schau es einfach an –

Verwandte Themen