window.plugins在服务

时间:2017-01-02 21:39:05

标签: angularjs ionic-framework toast

我已将showToast函数从控制器移动到服务。 目标是跨不同的控制器和指令共享showToast代码。

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:无法读取属性' toast'未定义的       at Object.showToast(ToastService.js:7)       在ReportProblemModalController.js:77

不确定如何在服务中公开window.plugins

修改

不确定这是否有帮助:

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

...但是,我觉得问题在其他地方,因为window.plugin在服务中未定义(并且应用程序中还有其他插件)。

1 个答案:

答案 0 :(得分: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);
    }
  };