gpt4 book ai didi

javascript - Cordova 'deviceready' 事件未从 Angular .run block 内触发

转载 作者:数据小太阳 更新时间:2023-10-29 05:23:04 25 4
gpt4 key购买 nike

我在让“设备准备好”从 AngularJS 内部注册时遇到问题。我确定这之前是有效的,所以我不确定发生了什么变化。

如果我从全局 addEventListener 调用“deviceready”,它会像这样工作:

document.addEventListener('deviceready', function(){
localStorage.deviceReadyGlobal = true;
});

deviceReadyGlobal=true 已设置。但是,如果我尝试从 Angular 中附加它,它永远不会触发,如下所示:

app.run(function(){
document.addEventListener('deviceready', function(){
localStorage.deviceReadyAngular = true;
});
});

deviceReadyAngular 从未设置。现在,我知道 PhoneGap 可能已经在 Angular 引导时触发了“deviceready”,但根据 PhoneGap 文档,这应该无关紧要。

The deviceready event behaves somewhat differently from others. Any event handler registered after the deviceready event fires has its callback function called immediately.

“设备就绪”的行为是否发生了变化?

我目前使用的是 Cordova 3.3.0 和 Angular 1.2.5。

最佳答案

这就是我在我的应用程序中执行此操作的方式;

// Create an application module with dependencies
var app = angular.module('myApp', []);

function loadTheApp() {

// Hide splash screen if any
if (navigator && navigator.splashscreen) {
navigator.splashscreen.hide();
}

// Initiate FastClick
FastClick.attach(document.body);

// Boot AngularJS
try {
angular.bootstrap(document, ['myApp']);
} catch (e) {
console.log('errrrrrrrrrrrrrr! ' + e);
}
}

// Listen to device ready
angular.element(document).ready(function() {
if (window.cordova) {
document.addEventListener('deviceready', loadTheApp, false);
} else {
loadTheApp();
}
});

这样,如果我们在设备环境中,那么我们会监听设备就绪事件,如果不是,那么我们就忽略该事件并加载我们的应用程序。

关于javascript - Cordova 'deviceready' 事件未从 Angular .run block 内触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com