Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 通过Backbone.js视图使用Cordova拍照_Javascript_Android_Backbone.js_Cordova_Ibm Mobilefirst - Fatal编程技术网

Javascript 通过Backbone.js视图使用Cordova拍照

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

我试图使用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}
        );
    }

});
这是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);//你说的“成功回调似乎永远不会触发”是什么意思?我不确定你在什么时候看到问题。你说的对,这是一个垃圾初始问题。我添加了更多细节。你说的“成功回调似乎永远不会触发”是什么意思?我不确定您在什么时候看到问题。您是对的,这是一个垃圾初始问题。我添加了更多细节。没问题。如果上述解决方案有帮助,请将答案标记为接受答案。这有助于我们跟踪未回答的问题。没问题。如果上述解决方案有帮助,请将答案标记为接受答案。它帮助我们跟踪未回答的问题。