Cordova API (IBM Worklight 内) を使用して写真を撮ろうとしていますが、成功のコールバックが起動しないようです (Backbone.js の外部で同じコードを使用すると、完全に機能します)。
これは私のビューファイルです:
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}
);
}
});
これは私がそのビューを開始する方法です:
'showWallet': function() {
new app.WalletView();
},
これは 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%;">
ボタンをクリックするとinput#camera-snap
、ネイティブ カメラ インターフェイスが表示されます。次に、写真を撮って (Android の場合) チェック ボタンをクリックします (ネイティブ インターフェイス内)。ただし、Hybrid アプリに戻っても何も起こりません。
成功した場合、コールバックが BASE64 データの巨大な文字列とともにポップアップすることを期待しalert()
ます (Backbone.xml 内にない場合と同様)。
私は何を間違っていますか?