¿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

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.

Necesitas invertir esto, primero manejas el evento "deviceready" de cordova y luego comienzas la aplicación angularjs. Me gusta esto:

  1. Primero quite el atributo ng-app de la etiqueta html / body

  2. 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> 
  • Phonegap versión 3 phonegap.js no encontrado
  • Reaccionar nativo: seleccionable vista de lista de sección da error
  • El evento "touchmove" en el sistema android: Transformer Prime
  • Href no funciona, cómo redirigir a una página específica en PhoneGap?
  • El posicionamiento fijo en el navegador Android 2.3 debería funcionar ... ¿no?
  • Phonegap (3.0.0) La cámara no tuvo éxito en el primer intento
  • Crear un objeto dos veces produce resultados diferentes
  • Cómo detectar el cierre del teclado evento en el dispositivo android con javascript
  • Iónicos 2 problemas de rendimiento de desplazamiento
  • Android / Phonegap - onClick () no funciona
  • Pasa variable de android a JavaScript lanzado en webview
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.