2017-01-02 11 views
1

私は、関数showToastをコントローラからサービスに移動しました。 異なるコントローラとディレクティブでshowToastコードを共有するのが目的です。window.pluginsがサービスで定義されていません

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

}); 

リファクタリングした後、私は以下の取得:

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

サービスにwindow.pluginsを公開する方法がわかりません。


EDIT

わからない、この場合に役立ちます:

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

を...しかし、私は(window.pluginがサービスで定義されていないようPROBは、他の場所で感じているとアプリには他のプラグインがあります)。

+0

あなたはどのようなライブラリを使用していますか? – Yaser

答えて

1

変更window.plugins.toast~$cordovaToastshowWithOptions$cordovaToastのメソッドですが、window.plugins.toastではなく、gitリポジトリに表示されています。私は角ウェブアプリケーションで使用されると思いますが、イオンではないかもしれません。

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

素敵な試み、多くのありがとう。それは動作していません。 'TypeError:プロパティを読み取ることができません '未定義のトースト' – NoIdeaHowToFixThis

+0

私のコードでは、 'トースト'はありません。 –

+0

私のコードにない未定義の 'toast'プロパティのためにエラーが発生しました。あなたのタイプミスかもしれません。ただそれをチェックする –

関連する問題