2016-02-09 3 views

ответ

2
initializeApp(){ 
    this.platform.ready().then(() => { 
     console.log(navigator.camera); 
     console.log("Cordova"); 
    } 
} 

Platform.ready() решает, когда deviceready уволил, так слушая его снова не нужно. В этом случае прослушивание после того, как оно было запущено, приведет к тому, что обработчик никогда не будет выполняться.

0

Я считаю, что вы работаете в состояние гонки, где deviceready стреляет до того platform.ready.

Моя рекомендация состоит в том, чтобы обрабатывать оба случая, когда deviceready срабатывает перед platform.ready и наоборот. Чтобы сделать это, вы должны следовать этому шаблону.

Где-то вне углового мира, так что, вероятно, в вашем js-файле запуска.

document.addEventListener("deviceready",() => window['isCordovaReady'] = true, false); 

Затем вы можете использовать это в вашем методе initializeApp

initializeApp(){ 
    this.platform.ready().then(() => { 
    if(!!window['isCordovaReady']){ 
     onDeviceReady(); 
    } else {   
     document.addEventListener("deviceready", onDeviceReady, false); 
    } 

    function onDeviceReady() { 
     console.log(navigator.camera); 
     console.log("Cordova"); 
    } 
    } 
} 

Также у вас есть синтаксические ошибки в коде, который вы публикуемую.

initializeApp(){ 
    this.platform.ready().then(() => { 
    { <-- This is extra and should be removed. 
     document.addEventListener("deviceready", onDeviceReady, false); 
    } <-- Missing a ');' 

    function onDeviceReady() { 
    console.log(navigator.camera); 
    console.log("Cordova"); 
    } 
}