javascript - vue上傳圖片,并顯示在頁面中的插件
問題描述
html代碼<p class='bg_white'>
<p class='content_mission'><span>我的任務<span style='padding: 0;'> ( 1 )</span></span><span></span><span @click='myMission'></span> </p> <p class='mission_list'><ul> <li><span class='mission_img'> <span class='mui-icon mui-icon-plusempty file'><p class='vue-upload-img-multiple'> <p v-if='images.length >0'> <ul><li v-for='image in images'> <img :src='http://www.gepszalag.com/wenda/image' /> <a href='javascript:void(0);' ><span @click=’delImage($index)’></span> </a></li> </ul> </p> <p> <p v-if='!image'> <input type='file' @change='onFileChange'> </p> <p v-else> <img :src='http://www.gepszalag.com/wenda/image' /> <button @click='removeImage'>Remove image</button> </p> </p> </p> </span></span><span class='mission_particulars'> <p class='mission_details'><span class='mission_name'>【四帶】老帶新</span><span class='mission_score'><span>2</span>分</span> </p> <p class='mission_progress'><span>進行中</span></p> <p class='mission_time_evaluation'><span class='mission_time'>2017年6月</span><span class='mission_evaluation'>評價:<span>3</span>人</span> </p></span> </li> <li><span class='mission_img'> <span class='mui-icon mui-icon-plusempty file'><p class='vue-upload-img-multiple'> <p v-if='img.length >0'> <ul><li v-for='image in img'> <img :src='http://www.gepszalag.com/wenda/image' /> <a href='javascript:void(0);' ><span @click=’delImage($index)’></span> </a></li> </ul> </p> <p> <p v-if='!image'> <input type='file' @change='onFileChange'> </p> <p v-else> <img :src='http://www.gepszalag.com/wenda/image' /> <button @click='removeImage'>Remove image</button> </p> </p> </p> </span></span><span class='mission_particulars'> <p class='mission_details'><span class='mission_name'>【四帶】老帶新</span><span class='mission_score'><span>2</span>分</span> </p> <p class='mission_progress'><span>進行中</span></p> <p class='mission_time_evaluation'><span class='mission_time'>2017年6月</span><span class='mission_evaluation'>評價:<span>3</span>人</span> </p></span> </li></ul> </p></p>
js代碼
module.exports = {
name: ’Upload’,data: function(){ return {images: [],img:[] }}, onFileChange:function (e) {var dom=e.currentTarget; var files = e.target.files || e.dataTransfer.files; if (!files.length) return;this.createImage(files); }, createImage (file) { var vm = this; var reader = null; var leng = file.length; for (var i = 0; i < leng; i++) { reader = new window.FileReader(); reader.readAsDataURL(file[i]); reader.onload = function (e) { vm.images.push(e.target.result); } } }, removeImage: function (e) { this.images = []; }, delImage: function (index) { this.images.shift(index); }}
};
這個js代碼,只能實現第一個圖片區域有圖,第二個上傳圖片區沒有圖
問題解答
回答1:第二個遍歷的img,但是你的JS代碼里面并沒有往img里面push圖片,而是一直往images里面Push,所以第二個是不會有圖的。可以通過傳參數的方式來判斷往哪個變量里面傳。
<p v-if='!image'> <input type='file' @change='onFileChange($event,1)'></p>
JS代碼
onFileChange:function (e, index) { const dom = e.currentTarget; const files = e.target.files || e.dataTransfer.files; if (!files.length) return; this.createImage(files, index);},createImage (file, index) { const me = this; for (let i = 0; i < file.length; i++) { const reader = new window.FileReader(); reader.readAsDataURL(file[i]); reader.onload = function (e) { //在這里對index做判斷來處理 if (index == 1) {me.images.push(e.target.result); } else { me.img.push(e.target.result); } } }}
