【问题标题】:$ionicPlatform.ready fires before deviceready$ionicPlatform.ready 在 deviceready 之前触发
【发布时间】:2016-04-28 14:03:52
【问题描述】:

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

问题

当从 $ionicPlatform.ready 调用安装在 iPhone IOS 9.2.1 上的 IonicView 应用程序时,$cordovaDevice.getDevice() 会引发设备未定义错误。但是,当从 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 成功!”

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

在调用 $cordovaDevice.getDevice(); 之前,任何想法为什么会发生这种情况或如何保证设备已加载;

谢谢, 汤姆

【问题讨论】:

    标签: cordova ionic-framework cordova-plugins


    【解决方案1】:

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

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

    How to Deviceready in right way in Ionic application?

    Cordova + Angularjs + Device Ready

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2019-01-31
      • 1970-01-01
      • 2014-12-27
      • 2015-02-23
      相关资源
      最近更新 更多