javascript – 如何在离子应用程序中以正确的方式使用Deviceready?

前端之家收集整理的这篇文章主要介绍了javascript – 如何在离子应用程序中以正确的方式使用Deviceready?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有Cordova和Ionic的移动应用.在应用程序启动后加载的默认页面需要使用sqlLite插件.

https://github.com/brodysoft/Cordova-SQLitePlugin

问题是视图包含

ng-init="setData()"

这是调用控制器方法,它与sql Lite插件一起使用.而且由于该方法是在设备发生事件未被初始化之前调用的(插件只能在设备事件发生后才能初始化).

所以我试过这个解决方法

.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"});
    }

但这不适合我.

所以我尝试第二个解决方

.factory('cordova',function () {
  return {
      test: function(){
          document.addEventListener("deviceready",this.ready,false);
      },ready: function(){
            alert("Ready");
            db = window.sqlitePlugin.openDatabase({name:"callplanner"});
      }

  }
})

在控制器init我试过:

cordova.test();

但这是不行的(devicereadfy在ng-init后被触发).

之后,我发现这篇文章

http://java.dzone.com/articles/ionic-and-cordovas-deviceready

但是我不明白如何在应用程序准备好之前放置“启动屏幕”,以及如何设置超时.

有人想法如何解决这个问题?

非常感谢任何建议或帮助.

解决方法

你需要反转这个,首先你处理cordova“deviceready”事件,然后你启动angularjs应用程序.喜欢这个:

>首先从html / body标签删除ng-app属性
> devireready之后启动有角度的应用程序:

<script>
  document.addEventListener('deviceready',function() { 
    angular.bootstrap(document,['YourAppName']);
  },false);
  var YourAppName = angular.module('YourAppName',[]);
</script>

类似的问题:

> Cordova + Angularjs + Device Ready
> Initialize my angularJs App after Phonegap deviceready

原文链接:https://www.f2er.com/js/153487.html

猜你在找的JavaScript相关文章