Мое приложение выглядит хорошо, благодаря Ionic. Там есть вся основная информация, а я лишь добавляю излишества — электронная почта, общий доступ, медиа (одна из функций — метроном) и так далее.
У меня не работают никакие плагины.
У меня был успех с предыдущим приложением Ionic, но все плагины вызывались изнутри
.run(function($ionicPlatform) {
$ionicPlatform.ready(function() {
}
}
и действительно, плагин Statusbar работает нормально, и он вызывается оттуда.
Я использую стартер бокового меню со встроенными вкладками, кстати.
Моя проблема, я полагаю, в том, что у меня есть три файла контроллера. main_ctrls.js — для основного приложения menu_ctrls.js — для страниц меню, таких как обратная связь и электронная почта, Analytics extras_ctrls.js — для «дополнительного» раздела с метрономом и так далее.
Я поставил «ngCordova» в качестве зависимости в каждый модуль и вызвал плагин из контроллера с готовой функцией. Вот электронный контроллер.
angular.module('menu.controllers', ['ngCordova'])
.controller('FeedCtrl', function($ionicPlatform, $scope, $cordovaEmailComposer) {
$ionicPlatform.ready(function() {
$cordovaEmailComposer.isAvailable().then(function() {
// is available
alert('Email is available');
}, function () {
// not available
alert('Email is NOT available');
});
var email = {
to: '[email protected]',
cc: '[email protected]',
bcc: ['[email protected]', '[email protected]'],
attachments: [
'file://img/logo.png',
'res://icon.png',
'base64:icon.png//iVBORw0KGgoAAAANSUhEUg...',
'file://README.pdf'
],
subject: 'Cordova Icons',
body: 'How are you? Nice greetings from Leipzig',
isHtml: true
};
$cordovaEmailComposer.open(email).then(null, function () {
alert('Email discarded.');
});
})
});
Я тестирую его на Android (Nexus 4 с Android 5.1) с проверкой Chrome, и я просто получаю сообщение об ошибке «Не удается прочитать свойство isAvailable из неопределенного». Излишне говорить, что предупреждения не появляются.
Это происходит со всеми плагинами, вызываемыми из контроллеров таким образом.
Что я делаю не так?