我正在使用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个警报,其中包含以下消息:
我真的希望在启动deviceready事件之前,ionicPlatform.ready不会触发。
在调用$ cordovaDevice.getDevice();
之前,有任何想法发生这种情况或如何保证设备已经加载谢谢, 汤姆
答案 0 :(得分:0)
也许你可以解决你的问题,在设备就绪事件被触发后采用引导Angular(以及因此离子)的解决方案。
StackOverflow(以及其他论坛)上有一些关于此的帖子。检查例如: