Javascript 通过Backbone.js视图使用Cordova拍照
我试图使用Cordova API(在IBM Worklight中)拍照,但成功回调似乎从未触发(当我在Backbone.js之外使用相同的代码时,它工作得非常好) 这是我的视图文件:Javascript 通过Backbone.js视图使用Cordova拍照,javascript,android,backbone.js,cordova,ibm-mobilefirst,Javascript,Android,Backbone.js,Cordova,Ibm Mobilefirst,我试图使用Cordova API(在IBM Worklight中)拍照,但成功回调似乎从未触发(当我在Backbone.js之外使用相同的代码时,它工作得非常好) 这是我的视图文件: var app = app || {}; app.WalletView = Backbone.View.extend({ el: '#page', template: Handlebars.getTemplate( 'wallet' ), events: { 'cli
var app = app || {};
app.WalletView = Backbone.View.extend({
el: '#page',
template: Handlebars.getTemplate( 'wallet' ),
events: {
'click #camera-snap': 'getPhoto'
},
initialize: function() {
this.render();
},
// render library by rendering each book in its collection
render: function() {
this.$el.html( this.template() );
return this;
},
getPhoto: function(e) {
var $img = this.$el.find('img#camera-image');
console.info('Taking Photo');
/*
| BASED ON: http://stackoverflow.com/a/11928792/633056
*/
navigator.camera.getPicture(
function(data) {
$img.show();
alert(data); // <-- success alert
//img.src = "data:image/jpeg;base64," + data;
$img.attr('src', "data:image/jpeg;base64," + data);
$('#camera-status').text("Success");
},
function(e) {
console.log("Error getting picture: " + e);
$('camera-status').innerHTML = e;
//dom.byId('camera-image').style.display = "none";
},
// must be DATA_URL to return the data for future use
{quality: 50, destinationType: navigator.camera.DestinationType.DATA_URL, sourceType : navigator.camera.PictureSourceType.CAMERA}
);
}
});
这是HTML模板:
<h1>Camera POC</h1>
<p>Camera Status: <i id="camera-status"></i></p>
<input type="submit" value="Take Picture" id="camera-snap">
<img src="" id="camera-image" style="width: 80%;">
摄像机POC
摄像机状态:
点击input#camera snap
按钮打开本机摄像机界面。然后我可以拍一张照片,然后(在Android上)点击勾号按钮(在本机界面中)。然而,当我返回到混合应用程序时,什么都没有发生
我希望成功回调中的alert()
会弹出一个包含大量BASE64数据的字符串(当它不在主干内时也是如此)
我做错了什么?能否在成功回调中的$img.show()调用之前添加一个console.log($img),如下所示
var $img = this.$el.find('img#camera-image');
console.info('Taking Photo');
navigator.camera.getPicture(
function(data) {
console.log($img); // <-- new console.log
$img.show();
alert(data);
....
},
function(e) {
....
},
....
);
}
var$img=this.$el.find('img#camera image');
控制台信息(“拍照”);
navigator.camera.getPicture(
功能(数据){
console.log($img);//能否在成功回调中的$img.show()调用之前添加console.log($img),如下所示
var $img = this.$el.find('img#camera-image');
console.info('Taking Photo');
navigator.camera.getPicture(
function(data) {
console.log($img); // <-- new console.log
$img.show();
alert(data);
....
},
function(e) {
....
},
....
);
}
var$img=this.$el.find('img#camera image');
控制台信息(“拍照”);
navigator.camera.getPicture(
功能(数据){
console.log($img);//你说的“成功回调似乎永远不会触发”是什么意思?我不确定你在什么时候看到问题。你说的对,这是一个垃圾初始问题。我添加了更多细节。你说的“成功回调似乎永远不会触发”是什么意思?我不确定您在什么时候看到问题。您是对的,这是一个垃圾初始问题。我添加了更多细节。没问题。如果上述解决方案有帮助,请将答案标记为接受答案。这有助于我们跟踪未回答的问题。没问题。如果上述解决方案有帮助,请将答案标记为接受答案。它帮助我们跟踪未回答的问题。