设置 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 不会打印出来
我认为您 运行 处于竞争状态,其中 deviceready
在 platform.ready
之前发射。
我的建议是处理 deviceready
在 platform.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
触发时解析,因此无需再次监听。在这种情况下,在触发后监听它会导致该处理程序永远不会执行。
initializeApp(){
this.platform.ready().then(() => {
{
document.addEventListener("deviceready", onDeviceReady, false);
}
function onDeviceReady() {
console.log(navigator.camera);
console.log("Cordova");
}
}
我们正在尝试 运行 onDeviceReady 函数,console.log 不会打印出来
我认为您 运行 处于竞争状态,其中 deviceready
在 platform.ready
之前发射。
我的建议是处理 deviceready
在 platform.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
触发时解析,因此无需再次监听。在这种情况下,在触发后监听它会导致该处理程序永远不会执行。