red*_*rom 9 javascript android angularjs cordova ionic-framework
我有基于Cordova和Ionic的移动应用程序.在应用程序启动后加载的默认页面需要使用SQLLite插件.
https://github.com/brodysoft/Cordova-SQLitePlugin
问题是该视图包含
ng-init="setData()"
Run Code Online (Sandbox Code Playgroud)
这是调用控制器方法在哪里使用SQL Lite插件.并且因为在未初始化deviceready事件之前调用该方法(插件只能在deviceready事件之后初始化).
所以我尝试了这个解决方法:
.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"});
}
Run Code Online (Sandbox Code Playgroud)
但这不适合我.
所以我试过第二个解决方案
.factory('cordova', function () {
return {
test: function(){
document.addEventListener("deviceready", this.ready, false);
},
ready: function(){
alert("Ready");
db = window.sqlitePlugin.openDatabase({name:"callplanner"});
}
}
})
Run Code Online (Sandbox Code Playgroud)
并在控制器初始化我试过:
cordova.test();
Run Code Online (Sandbox Code Playgroud)
但这不起作用(在ng-init之后触发devicereadfy).
之后我发现了这篇文章:
http://java.dzone.com/articles/ionic-and-cordovas-deviceready
但我不明白如何在应用程序准备好之前放置"启动画面"以及如何设置超时.
有人知道如何解决这个问题?
非常感谢您的任何建议或帮助.
T4d*_*deu 15
你需要反转它,首先你处理cordova"deviceready"事件然后你启动angularjs应用程序.像这样:
首先从html/body标签中删除ng-app属性
在devireready之后启动角度应用程序:
<script>
document.addEventListener('deviceready', function() {
angular.bootstrap(document, ['YourAppName']);
}, false);
var YourAppName = angular.module('YourAppName', []);
</script>
Run Code Online (Sandbox Code Playgroud)类似的问题:
| 归档时间: |
|
| 查看次数: |
18683 次 |
| 最近记录: |