设置 Ionic 2 Cordova 相机插件

Setting up Ionic 2 Cordova Camera Plugin

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

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

 }

我们正在尝试 运行 onDeviceReady 函数,console.log 不会打印出来

我认为您 运行 处于竞争状态,其中 devicereadyplatform.ready 之前发射。

我的建议是处理 devicereadyplatform.ready 之前触发的两种情况以及相反的情况。为此,您应该遵循此模式。

angular 世界之外的某个地方,所以可能在您的启动 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");
  }
 }
 initializeApp(){
     this.platform.ready().then(() => {
         console.log(navigator.camera);
         console.log("Cordova");
     }
 }

Platform.ready()deviceready 触发时解析,因此无需再次监听。在这种情况下,在触发后监听它会导致该处理程序永远不会执行。