微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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.jb51.cc/js/153487.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐