$ ionicPlatform.ready在deviceready

时间:2016-01-22 04:02:49

标签: cordova ionic-framework cordova-plugins

我正在使用Cordova和Ionic,尝试使用Cordova插件和ngCordova设备(http://ngcordova.com/docs/plugins/device/)来获取设备。

问题

$ cordovaDevice.getDevice()在从$ ionicPlatform.ready调用时在IPhone IOS 9.2.1上安装的IonicView应用程序中运行时抛出设备未定义错误。但是,从deviceready事件调用它时工作正常。

有趣的是,$ ionicPlatform.ready在Android设备或Windows 8.1设备上运行良好。

以下是重新创建问题的一些代码:

angular.module('starter', ['ionic', 'ngCordova', 'starter.controllers', 'starter.services'])

.run(function ($ionicPlatform, $cordovaDevice) {

document.addEventListener('deviceready', onDeviceReady.bind(this), false);

function onDeviceReady() {

    try {
        var device = $cordovaDevice.getDevice();
        alert("onDeviceReady Success!");
    } catch (e) {
        console.warn("onDeviceReady error: " + e)
        alert("onDeviceReady error: " + e);
    }
};

$ionicPlatform.ready(function () {

    try {
        var device = $cordovaDevice.getDevice();
        alert("ionicPlatform.ready Success!")
    } catch (e) {
        console.warn("ionicPlatform.ready error: " + e)
        alert("ionicPlatform.ready error: " + e);
    }
});
})

此代码将生成2个警报,其中包含以下消息:

  • " ionicPlatform.ready错误:ReferenceError:无法找到变量: 装置"
  • " onDeviceReady成功!"

我真的希望在启动deviceready事件之前,ionicPlatform.ready不会触发。

在调用$ cordovaDevice.getDevice();

之前,有任何想法发生这种情况或如何保证设备已经加载

谢谢, 汤姆

1 个答案:

答案 0 :(得分:0)

也许你可以解决你的问题,在设备就绪事件被触发后采用引导Angular(以及因此离子)的解决方案。

StackOverflow(以及其他论坛)上有一些关于此的帖子。检查例如:

How to Deviceready in right way in Ionic application?

Cordova + Angularjs + Device Ready