从离子控制器访问cordova插件

Posted

技术标签:

【中文标题】从离子控制器访问cordova插件【英文标题】:access cordova plugins from ionic controller 【发布时间】:2015-01-03 08:36:36 【问题描述】:

我想在离子应用中使用Cordova Email Plugin。

我可以在 $ionicPlatform 函数中访问插件,但是当我在处理 ng-click 的函数中将代码移动到控制器时,它不起作用。

知道我的问题是如何从控制器访问 cordova 插件对象吗?

这是我在 app.js 中使用并运行的代码:

.run(function($ionicPlatform) 
  $ionicPlatform.ready(function() 

cordova.plugins.email.isAvailable(
  function (isAvailable) 
       alert('Service is available');
  
);
// Hide the accessory bar by default (remove this to show the accessory bar above the keyboard
// for form inputs)
if(window.cordova && window.cordova.plugins.Keyboard) 
  cordova.plugins.Keyboard.hideKeyboardAccessoryBar(true);

if(window.StatusBar) 
  // org.apache.cordova.statusbar required
  StatusBar.styleDefault();

  );
)

这与 controller.js 中的相同代码不起作用(我在路由中设置了控制器):

.controller('ApplicationController', function($scope) 
  $scope.sendMail = function () 
    cordova.plugins.email.isAvailable(
      function (isAvailable) 
           alert('Service is not available');
      
    );
  
)

这是我的点击调用:

  <a ng-click="sendMail()">
  <i class="icon ion-android-forums"></i>
send mail
  </a>

这是代码在 $ionicPlatform 中运行良好,但在单独的控制器文件中不起作用。

【问题讨论】:

显示你的控制器的完整代码 请发布代码,说明您如何通过 ng-click 调用和定义此函数 感谢您的关注我更新我的问题添加更多代码。 【参考方案1】:

您应该为此使用 Angular.js 包装器。

查看ngCordova。

【讨论】:

Ladislav 你能举个例子吗? :-)【参考方案2】:

在引用$ionicPlatform 之外的插件时,请尝试使用window.cordova 而不是cordova

【讨论】:

以上是关于从离子控制器访问cordova插件的主要内容,如果未能解决你的问题,请参考以下文章

如何在插件中访问嵌入的cordova webview?

Cordova 插件离子键盘使布局崩溃

MS ADAL 离子 Cordova 插件

如何在离子项目中导入cordova自定义插件?

离子 ios 应用程序无法访问互联网

离子屏幕方向 Cordova 插件在 iOS 环境中未锁定为纵向模式