我正在试用Meteor Cordova相机插件,它不会工作,我不知道我错过了什么。
这是我做的:
Meteor创建新项目
添加了cordova相机包meteor add cordova:org.apache.cordova.camera@0.3.1
对屏幕上的默认按钮进行编程以拍摄照片,然后将其附加到正文中
这应该使用内置于笔记本电脑中的相机,但是当我点击按钮时我得到的只有:Uncaught TypeError: Cannot read property 'getPicture' of undefined
当我使用命令meteor run ios
在iPhone模拟器中运行应用程序并单击按钮时出现弹出错误:Failed because: no camera available
这是我的html和js文件的样子:
main.html中:
<head>
<title>cameraTest</title>
</head>
<body>
<h1>Welcome to Meteor!</h1>
{{> hello}}
</body>
<template name="hello">
<button>Click Me</button>
<p>You've pressed the button {{counter}} times.</p>
</template>
main.js :
if (Meteor.isClient) {
// counter starts at 0
function onSuccess(imageData) {
var image = document.getElementById('myImage');
image.src = "data:image/jpeg;base64," + imageData;
$('body').append(image);
}
function onFail(message) {
alert('Failed because: ' + message);
}
Session.setDefault("counter", 0);
Template.hello.helpers({
counter: function () {
return Session.get("counter");
}
});
Template.hello.events({
'click button': function () {
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL
});
}
});
}
答案 0 :(得分:1)
这是因为如documentation所述,必须将cordova代码包含在闭包中。您必须在events
函数中执行此操作。见底部。
PS:您无法在iOS模拟器上测试相机,而是使用真正的iPhone。
Meteor.startup(function () {
// The correct way
navigator.geolocation.getCurrentPosition(success));
});
// Will not work
navigator.geolocation.getCurrentPosition(success));
您的代码将变为:
Template.hello.events({
'click button': function () {
Meteor.startup(function() {
navigator.camera.getPicture(onSuccess, onFail, { quality: 50,
destinationType: Camera.DestinationType.DATA_URL
});
});
}
});