【发布时间】: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