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
});
},
因爲目前我無法弄清楚「正確」的方式。我會問一個關於_right_方式的問題。 – undefined
從技術上講,問題不在於「正確的方式」。這就是爲什麼模型設置時模型沒有觸發'change'事件的原因。儘管我很想知道在Backbone中這樣做的正確方法。 – Johnston
顯示該行的內容:'var thisChild = that.children.get(sentData.id);' 是'thisChild' undefined? –