2016-04-14 7 views
1

Я использую Ионные рамки и хочу также включить cordova email composer plugin.Ошибка электронной почты Кордовы электронной почты: isAvailable

я установить 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: '[email protected]', 
    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 view, но он ничего не делает.

на консоли браузера я получаю эту ошибку:

TypeError: Cannot read property 'isAvailable' of undefined.

это нормальный вопрос или я использую кодировку неправильно?

ответ

-1

Вы должны включить $cordovaEmailComposer в качестве параметра функции контроллера не в функции $scope.mailclient. Тогда это должно сработать.

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

Тогда ваш плагин установлен неправильно. Ты звонил?

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

я сделал в первый, но я получаю эту ошибку тогда. 'ionic.bundle.js: 25642 Ошибка: [$ injector: unpr] Неизвестный поставщик: $ cordovaEmailComposerProvider <- $ cordovaEmailComposer <- mailCtrl' –

+0

Я попробовал. После того, как я установил плагин с плагином cordova, добавьте https: // github.com/katzer/cordova-plugin-email-composer.git', я не получаю ошибку провайдера. –

+0

Я все еще не работал –

0

Матрица инъекций зависимостей отсутствует в закрывающей квадратной скобке в контроллере. Снимите закрывающий кронштейн с конца контроллера. Например:

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

Также плагиновые звонки должны быть включены в мероприятие cordicody. Он обеспечивает загрузку устройства перед выполнением вызова плагина.

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

Прочитайте это ngCordova issues:

Смежные вопросы