2013-08-20 157 views
1

我採取了非Kosher方法,並使用$.ajax()進行ajax文件上傳,因爲目前我無法弄清楚「骨幹」方式。圖片已上傳,並且ajax請求以JSON格式發送新的主幹模型,並填充新照片的文件名。但是,該模型未觸發change事件,因此我無法填充個人資料圖片。請參閱下面的success函數。骨幹模型更改事件沒有在設置模型後觸發

getFile:function(e){ 
     e.preventDefault(); 
     that = this; 
     var file = e.target.files[0]; 
     name = file.name; 
     size = file.size; 
     type = file.type; 
     var formData = new FormData($('#upload-child-pic-form')[0]); 
     console.log(this,'currentUploadU',this.currentUpload); 
     formData.append('child_id',this.currentUpload); 
     $.ajax({ 
      url: '/children/upload/', 
      type: 'POST', 
      xhr: function() { 
      var myXhr = $.ajaxSettings.xhr(); 
       if(myXhr.upload){ 
        myXhr.upload.addEventListener('progress',function(data){ 
         $("#upload-child-pic-progress").val(data.position/data.totalSize * 100); 
        }, false); 
       } 
       return myXhr; 
      }, 
      //Ajax events 
      beforeSend: function(data){ 
       $("#upload-child-pic-progress").removeClass('hide'); 
      }, 
      success: function(data){ 
       $("#upload-child-pic-progress").addClass('hide'); 
       $("#add-child-profile-pics-modal").modal('hide'); 
       var sentData = $.parseJSON(data); 
       var thisChild = that.children.get(sentData.id); 
       thisChild.set("photo",sentData.photo); 
       thisChild.trigger('change'); 
      }, 
      error: function(data){ 
       console.log('error',data); 
      }, 
      // Form data 
      data: formData, 
      //Options to tell jQuery not to process data or worry about content-type. 
      cache: false, 
      contentType: false, 
      processData: false 
     }); 
    }, 
+1

因爲目前我無法弄清楚「正確」的方式。我會問一個關於_right_方式的問題。 – undefined

+0

從技術上講,問題不在於「正確的方式」。這就是爲什麼模型設置時模型沒有觸發'change'事件的原因。儘管我很想知道在Backbone中這樣做的正確方法。 – Johnston

+0

顯示該行的內容:'var thisChild = that.children.get(sentData.id);' 是'thisChild' undefined? –

回答

0

你之前的那個變量和其他變量...

有這些可變全球缺少var是一個威脅,他們可以改變/重寫此範圍內的成功回調被調用之前。

that = this; //should be - 'var that = this;' 
+0

當我設置'var that = this'時,它仍然不起作用。 – Johnston