0

휴대 기기에서 파일을 찾아보기 위해 cordova-camera-plugin 코드가 있습니다. 기기에서 실행될 때 한 번만 작동합니다. 다음 시도에서 파일을 선택할 때 대화 상자가 숨겨지지 않습니다.Bug on Cordova 카메라 플러그인

제 코드가 잘못되었습니다. HTML :

<div data-page="do-job" class="page navbar-fixed"> 
    <div class="navbar"> 
    <div class="navbar-inner"> 
     <div class="left"><a href="index-content.html" class="link icon-only"><i class="icon icon-back"></i></a></div> 
     <div class="center"><a href="index-content.html" class="link">Kerjakan Tugas</a></div> 
    </div> 
    </div> 
    <div id="camerass"> 
    <div class="page-content"> 
    <form action="#" id="form"> 
    <input type="hidden" name="attachment" id="post_image" value=""> 
    <input type="hidden" name="job_id" id="job_id" value=""> 
    <div class="list-block inputs-list"> 
     <ul> 
     <li class="align-top"> 
      <div class="item-content"> 
      <div class="item-inner"> 
       <div class="item-title label">Desc</div> 
       <div class="item-input"> 
       <textarea class="resizable isi" name="isi" id="isi" rows="4" class='required'></textarea> 
       </div> 
      </div> 
      </div> 
     </li> 
     </ul> 
    <div class="image-list"> 
     <div class="file-chooser">     
     <i class="fagambar2 fa fa-image"></i> 
     <i class="fagambar fa fa-plus"></i> 
     </div> 
    </div> 
    </div> 
     <div class="content-block"><a href="#" class="button button-fill kirim_pekerjaan">Send Job</a></div> 
    </form>  
    </div> 
    </div> 

기능인 자바 스크립트가 :

$(document).on('click','.file-chooser', function (e) 
    { 
    var ini=$(this); 
    ini.attr('disabled',true); 
    var html=''; 
    var opt={ 
     sourceType:0|2, 
     mediaType: Camera.MediaType.ALLMEDIA 
    }; 
    navigator.camera.getPicture(function(imageData){ 
     console.log(imageData); 
     if(isImage(imageData)) 
     { 
     html+='<div class="image-added" data-src="'+imageData+'" ><img src="'+imageData+'" class="image-kirim-thumbnail"/></div>'; 
     }else 
     { 
     html+='<div class="image-added" data-src="'+imageData+'"><i class="fa fa-video-camera"></i> </div>'; 
     } 
     $('.image-list').prepend(html); 
     var win = function (r) { 
      console.log("Code = "); 
      console.log(r); 
      var resp=JSON.parse(r.response); 

      if(resp.STATUS=='SUCCESS') 
      { 
      dataUpload.push(resp.DESCRIPTION); 
      $('#post_image').val(dataUpload.toString()); 
      } 
      ini.removeAttr('disabled'); 
     } 
     var fail = function (error) { 
      console.log('error'); 
      console.log(error); 
     } 
     var options = new FileUploadOptions(); 
     options.fileKey = "file"; 
     options.fileName = 'file_image.jpg'; 
     options.httpMethod="POST"; 
     if(getFileType(imageData)=='image') 
     {   
      options.mimeType = 'image/jpeg'; 
     }else 
     { 
      options.mimeType = 'video/mp4'; 
     } 

     var params = {}; 
     params.value1 = "test"; 
     params.value2 = "param"; 

     options.params = params; 
     var ft = new FileTransfer(); 
     var path_url=APIPath+'upload_file/uploadFile/'+window.localStorage.getItem('token_id'); 
     ft.upload(imageData, encodeURI(path_url), win, fail, options); 
    }, function(msg){ 
     console.log("Error"); 
     console.log(msg); 
    },opt); 

    }); 
+0

if(kameraMode===true) { kamera.getPicture(function(imageData){ kameraMode=false; 

....................................., 문제는 요소가 둘 이상의 클릭 이벤트를 수신한다는 것입니다. 그래서 cameraMode라는 변수를 추가합니다. 경우 경우 (kameraMode === TRUE) {false를 kamera.getPicture (함수 (imageData의) {= kameraMode; ................... .......... –

답변

0

내 문제에 대한 대답,

문제는이 요소가 하나 개 이상 클릭 이벤트를 청취을 발견했다. 그래서 cameraMode라는 변수를 추가합니다. 때 나는 내 문제에 대한 해답을 발견