¿Cómo Deviceready de manera correcta en la aplicación iónica?
Tengo Cordova y aplicaciones móviles basadas en Ionic. En la página predeterminada que se carga después del inicio de la aplicación es necesario trabajar con el complemento SQLLite.
Https://github.com/brodysoft/Cordova-SQLitePlugin
- Cómo mostrar javascript popup en android webview
- La fecha de Javascript no es válida en iOS
- Android WebView: sólo carga HTML, no carga JS o CSS (en algunos dispositivos)
- API de notificación en el navegador Chrome de Android
- Jest error de caso de prueba en reactivo nativo mediante el complemento externo
El problema es que la vista contiene
ng-init="setData()"
Que está llamando al método de controlador donde se trabaja con SQL Lite plugin. Y debido a que el método se llama antes de que el evento deviceready no se inicialice (el complemento se puede inicializar sólo después del evento deviceready).
Así que he intentado esta solución:
.run(function($ionicPlatform) { $ionicPlatform.ready(function() { // 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); db = window.sqlitePlugin.openDatabase({name:"callplanner"}); }
Pero esto no funciona para mí.
Así que probé segunda solución:
.factory('cordova', function () { return { test: function(){ document.addEventListener("deviceready", this.ready, false); }, ready: function(){ alert("Ready"); db = window.sqlitePlugin.openDatabase({name:"callplanner"}); } } })
Y en init del regulador intenté:
cordova.test();
Pero esto no funciona (devicereadfy se dispara después de ng-init).
Después de que encontré este artículo:
Http://java.dzone.com/articles/ionic-and-cordovas-deviceready
Pero no entendí cómo poner "pantalla de bienvenida" antes de que la aplicación esté lista y cómo establecer el tiempo de espera.
¿Alguien idea cómo puedo resolver este problema?
Muchas gracias por cualquier consejo o ayuda.
- JQuery Mobile + PhoneGap para Android - Error al cargar index.html
- El navegador de Android dificulta los eventos para dos taps en rápida sucesión
- Chartv Donut desaparece
- Icono de la aplicación para Android en Phonegap
- Android Webview multitouch touchstart evento no funciona con más de 2 dedos
- Objeto de audio creado dinámicamente que no se reproduce en el navegador Chrome de Android
- Android 2.X HTML5 Video final pantalla completa
- ¿Cómo puedo ocultar el teclado Android usando JavaScript?
Necesitas invertir esto, primero manejas el evento "deviceready" de cordova y luego comienzas la aplicación angularjs. Me gusta esto:
-
Primero quite el atributo ng-app de la etiqueta html / body
-
Inicie la aplicación angular después de la devireready:
<script> document.addEventListener('deviceready', function() { angular.bootstrap(document, ['YourAppName']); }, false); var YourAppName = angular.module('YourAppName', []); </script>
Preguntas similares:
- Cordova + Angularjs + Dispositivo Listo
- Inicializar mi aplicación angularJs después de Phonegap deviceready
No pude hacer que funcione con la solución @ t4deu, porque mi etiqueta ng-app estaba en el cuerpo, así que dejo un pequeño cambio en caso de que ayuda a alguien.
<script> document.addEventListener('deviceready', function() { angular.bootstrap(document.querySelector('body'), ['starter']); }, false); </script>
- Android Annotation Error con Android Studio Update 1.0
- Android: ListFragment: Cómo actualizar la lista