1

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 内にない場合と同様)。

私は何を間違っていますか?

4

1 に答える 1