【问题标题】:Cordova email composer 'isAvailable' errorCordova 电子邮件作曲家“isAvailable”错误
【发布时间】:2016-04-14 08:52:59
【问题描述】:

我正在使用 Ionic 框架 并且也想合并 cordova email composer plugin

我确实安装了 CLI:

cordova plugin add https://github.com/katzer/cordova-plugin-email-composer.git

并使用给定的默认示例(我配置的版本):

Javascript

app.controller('mailCtrl', ['$scope', '$cordovaEmailComposer' , function($scope, $cordovaEmailComposer) {

$scope.mailclient = function($cordovaEmailComposer)
{

$cordovaEmailComposer.isAvailable().then(function() {
   console.log("email available");
 }, function () {
   console.log("email not available");
 });

  var email = {
    to: 'rgeldenhuis@gmail.com',
    attachments: [
      '...\img\nslogo.png',
      '...\img\nslogo.png',
      '...\img\nslogo.png'
    ],
    subject: 'Truck Checked In',
    body: 'Hi',
    isHtml: true
  };

 $cordovaEmailComposer.open(email).then(null, function () {
   // user cancelled email
 });
 }
}]);

HTML

<ion-view view-title="Mail">          
 <ion-content ng-controller="mailCtrl">

   <button ng-click="mailclient(email)" class="button button-icon icon ion-email">
      Send mail
   </button>

 </ion-content>
</ion-view>

我知道它不能在我使用 Ionic 视图应用程序测试过的浏览器上运行,但它什么也没做。

在浏览器控制台上我收到此错误:

TypeError:无法读取未定义的属性“isAvailable”。

这是正常问题还是我使用的编码错误?

【问题讨论】:

    标签: javascript angularjs cordova plugins ionic-framework


    【解决方案1】:

    您必须包含 $cordovaEmailComposer 作为控制器函数的参数,而不是函数 $scope.mailclient。那么它应该可以工作了。

    app.controller('mailCtrl', function($scope, $cordovaEmailComposer) {
    ...
    }
    

    那么你的插件没有正确安装。你打电话了吗?

    cordova plugin add https://github.com/katzer/cordova-plugin-email-composer.git
    

    【讨论】:

    • 我一开始是这样,但后来我得到了这个错误。 ionic.bundle.js:25642 Error: [$injector:unpr] Unknown provider: $cordovaEmailComposerProvider &lt;- $cordovaEmailComposer &lt;- mailCtrl
    • 我试过了。使用cordova plugin add https://github.com/katzer/cordova-plugin-email-composer.git 安装插件后,我没有收到提供程序错误。
    • plugins/下找到目录cordova-plugin-email-composer了吗?
    • 是的,它就在那里,它应该可以工作我已正确遵循所有说明。
    • 这是你的第一个 cordova 插件吗?您必须将 ngCordova 添加到您的角度模块中。 -> angular.module('myApp', ['ngCordova'])
    【解决方案2】:

    依赖注入数组在控制器中缺少右方括号。从控制器末端拆下闭合支架。像这样:

    app.controller('mailCtrl', ['$scope', '$cordovaEmailComposer' ] , 
     function($scope, $cordovaEmailComposer) {
    });
    

    插件调用也将包含在 cordova 的 deviceready 事件中。它确保在进行插件调用之前加载设备。

    document.addEventListener("deviceready", function () {
       // plugin call
    }, false);
    

    阅读此ngCordova issues

    【讨论】:

      猜你喜欢
      • 2017-01-18
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多