我已将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
在服务中未定义(并且应用程序中还有其他插件)。
答案 0 :(得分:1)
将window.plugins.toast
修改为$cordovaToast
。 showWithOptions
是$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);
}
};