Wie Deviceready-in der rechten Weise in Ionischen Anwendung?
Ich habe Cordova und Ionic-basierten mobilen Anwendung. Auf der Standard-Seite, die geladen wird nach dem start der Anwendung arbeiten müssen, um mit SQLLite-plugin.
https://github.com/brodysoft/Cordova-SQLitePlugin
Problem ist, dass die view enthält
ng-init="setData()"
Welche den Aufruf der controller-Methode, wo gearbeitet wird mit SQL Lite plugin. Und weil der die Methode aufgerufen wird, bevor das deviceready-Ereignis ist nicht initialisiert (plugin initialisiert nur nach deviceready-Ereignis).
Also versuchte ich diese Problemumgehung:
.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"});
}
Aber das funktioniert nicht für mich.
Also versuchte ich die zweite Lösung:
.factory('cordova', function () {
return {
test: function(){
document.addEventListener("deviceready", this.ready, false);
},
ready: function(){
alert("Ready");
db = window.sqlitePlugin.openDatabase({name:"callplanner"});
}
}
})
- und controller-init habe ich versucht:
cordova.test();
Aber das funktioniert nicht (devicereadfy ausgelöst wird, nachdem ng-init).
Danach fand ich diesen Artikel:
http://java.dzone.com/articles/ionic-and-cordovas-deviceready
Aber ich verstehe nicht, wie man "splash-screen", bevor die app fertig ist und wie timeout.
Jemand Idee wie kann ich dieses problem lösen?
Vielen Dank für jeden Rat oder Hilfe.
- Niemand weiß, wie es zu lösen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie umkehren dies, zuerst behandeln Sie die cordova "deviceready" event und dann starten Sie die angularjs-app. Wie diese:
Entfernen Sie zuerst das ng-app Attribut aus dem html/body-tag
Starten Sie den Winkel-app nach dem devireready:
Ähnliche Fragen:
Konnte ich nicht die Arbeit mit dem @t4deu Lösung, weil mein ng-app-tag wurde in den Körper, so dass ich es ein wenig ändern, im Falle, dass es hilft jemand.