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

标签 javascript angularjs cordova

我在让“设备准备好”从 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/

相关文章:

ios - phonegap for ios 中的 facebook 身份验证

javascript - ionic : Crosswalk crashing on Samsung S6 device

javascript - AngularJS:ng-model 没有在 UI 中更新

javascript - 如何用JS制作一个简单的幻灯片?

javascript - 是否可以在 Firestore 中读取文档然后锁定它,这样其他人就无法读取它?

javascript - Angular 2 对如此多的 javascript 文件的依赖是否会妨碍/影响其性能?

javascript - Angular - 更改服务中的对象属性值并在另一个 Controller 中使用它

javascript - 多姆操纵。所有更改同时进行

Angularjs Kendo Treeview 未在 Kendo 弹出窗口中显示复选框

android - Quasar 中不显示网站图标和启动屏幕