2
 initializeApp(){
     this.platform.ready().then(() => {
       {
     document.addEventListener("deviceready", onDeviceReady, false);
      }

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

 }

onDeviceReady 関数を実行しようとしていますが、console.log は出力されません。

4

2 に答える 2

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

Platform.ready()が発火したときに解決されるdevicereadyため、再度リッスンする必要はありません。この場合、起動後にリッスンすると、そのハンドラーが実行されなくなります。

于 2016-02-11T15:03:41.547 に答える
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");
  }
 }
于 2016-02-09T23:24:42.553 に答える