最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實(shí)現(xiàn)圖片上傳功能

 更新時間:2020年05月28日 10:20:01   作者:--風(fēng)起云涌--  
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)圖片上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了vue實(shí)現(xiàn)圖片上傳功能的具體代碼,供大家參考,具體內(nèi)容如下

先看效果

圖片上傳使用vant組件庫中的 van-uploader, 使用方法參考官網(wǎng)
vant組件庫

下面看代碼

UploadPicture.vue

<template>
 <div class="content">
 <!-- 底部模塊start -->
 <div class="bottom_bg">
 <p class="flexst pt8">上傳圖片</p>
 <div class="upload_bg">
 <div
 v-for="(item, index) in this.remUploadImgUrls">
 <img class="showimg" :src="item"/>
 <img
 class="delicon"
 src="@/assets/images/consult_close.png"
 @click="(e) => delImgClick(index, e)"
 />
 </div>
 <!--
 v-if="remUploadImgUrls.length < 6"
 限制最多6張
 -->
 <img
 class="addimg" src="@/assets/images/inq_addImg.png"
 v-if="remUploadImgUrls.length < 6"
 @click="openMenu"
 />
 </div>
 </div>
 <!-- 底部模塊end-->
 <van-actionsheet
 v-model="menuShow"
 :actions="actions"
 cancel-text="取消"
 @select="onSelect"
 />
 <van-uploader id="upload" :after-read="onRead"/>
 </div>
</template>

<script>
 import {mapState} from 'vuex'
 export default {
 name: "UploadPicture",
 data() {
 return {
 menuShow: false,
 actions: [
 {
 name: '歷史照片'
 },
 {
 name: '選擇相冊或拍照'
 }
 ],
 }
 },
 computed: {
 ...mapState({
 remUploadImgUrls() {
 return this.$store.state.uploadImgUrls;
 }
 })
 },
 methods: {
 openMenu() {
 this.menuShow = true
 },
 onSelect(item) {
 this.menuShow = false
 console.log(item);
 if (item.name === '選擇相冊或拍照') {
 return document.getElementById('upload').click();
 }
 },
 onRead(file) {
 this.$store
 .dispatch({
 type: 'uploadImg',
 payload: file.file
 })
 .then(() => {
 // Toast.clear;
 });
 },
 delImgClick(index, e) {
 let tmpList = [...this.remUploadImgUrls];
 tmpList.splice(index, 1);
 this.$store.commit('DEL_UPLOADIMG', tmpList);
 }
 },
 }

</script>

<style scoped lang="scss">
 .content {
 .bottom_bg {
 margin: 10px 8px 0;
 padding: 0 .1rem;
 background: #fff;
 .upload_bg {
 margin-top: 10px;
 display: flex;
 justify-content: space-between;
 flex-wrap: wrap;
 div {
 width: 31%;
 margin-bottom: 10px;
 position: relative;
 .showimg {
 width: 100%;
 height: 100%;
 }
 .delicon {
 position: absolute;
 right: -6px;
 top: -6px;
 width: 20px;
 height: 20px;
 }
 }
 .addimg {
 width: 31%;
 height: 31%;
 margin-bottom: 10px;
 }
 &:after {
 width: 30%;
 content: '';
 }
 }
 }
 }

</style>

src/store/index.js

import Vue from 'vue';
import vuex from 'vuex';
import { get, post} from '@/api';

Vue.use(vuex);
export default new vuex.Store({
 module: {
 },
 state: {
 uploadImgUrls: [],
 },
 mutations: { // 處理同步方法
 SET_UPLOADIMG(state, imgUrl) {
 const tmp = state.uploadImgUrls;
 tmp.push(imgUrl);
 state.uploadImgUrls = tmp;
 },
 DEL_UPLOADIMG(state, data) {
 state.uploadImgUrls = [...data];
 },
 },
 actions: { // 處理異步方法
 // 上傳圖片
 async uploadImg({ commit }, { payload }) {
 let f = new FormData();
 f.append('file', payload);
 const data = await post('/upload', f);
 commit('SET_UPLOADIMG', data);
 },
 },
});

更多文章可以點(diǎn)擊《Vue.js前端組件學(xué)習(xí)教程》學(xué)習(xí)閱讀。

關(guān)于vue.js組件的教程,請大家點(diǎn)擊專題vue.js組件學(xué)習(xí)教程進(jìn)行學(xué)習(xí)。

更多vue學(xué)習(xí)教程請閱讀專題《vue實(shí)戰(zhàn)教程》

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 關(guān)于vue-cli 3配置打包優(yōu)化要點(diǎn)(推薦)

    關(guān)于vue-cli 3配置打包優(yōu)化要點(diǎn)(推薦)

    這篇文章主要介紹了vue-cli 3配置打包優(yōu)化要點(diǎn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue結(jié)合后臺導(dǎo)入導(dǎo)出Excel問題詳解

    Vue結(jié)合后臺導(dǎo)入導(dǎo)出Excel問題詳解

    這篇文章主要介紹了Vue結(jié)合后臺導(dǎo)入導(dǎo)出Excel問題詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • vue+koa2實(shí)現(xiàn)session、token登陸狀態(tài)驗(yàn)證的示例

    vue+koa2實(shí)現(xiàn)session、token登陸狀態(tài)驗(yàn)證的示例

    這篇文章主要介紹了vue+koa2實(shí)現(xiàn)session、token登陸狀態(tài)驗(yàn)證的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴

    vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴

    這篇文章主要介紹了vue-cli如何修改打包項(xiàng)目結(jié)構(gòu)及前綴問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • VUE使用docxtemplater導(dǎo)出word文檔實(shí)例(帶圖片)

    VUE使用docxtemplater導(dǎo)出word文檔實(shí)例(帶圖片)

    docxtemplate支持的功能很多,語法包含變量替換、條件判斷、循環(huán)、列表循環(huán)、表格循環(huán)等,下面這篇文章主要給大家介紹了關(guān)于VUE使用docxtemplater導(dǎo)出word功能(帶圖片)的相關(guān)資料,需要的朋友可以參考下
    2023-06-06
  • 最簡單的vue消息提示全局組件的方法

    最簡單的vue消息提示全局組件的方法

    這篇文章主要介紹了最簡單的vue消息提示全局組件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • 使用canvas實(shí)現(xiàn)一個vue彈幕組件功能

    使用canvas實(shí)現(xiàn)一個vue彈幕組件功能

    這篇文章主要介紹了使用canvas實(shí)現(xiàn)一個vue彈幕組件功能,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-11-11
  • Vue守衛(wèi)零基礎(chǔ)介紹

    Vue守衛(wèi)零基礎(chǔ)介紹

    導(dǎo)航守衛(wèi)就是路由跳轉(zhuǎn)過程中的一些鉤子函數(shù),這個過程中觸發(fā)的這些函數(shù)能讓你有操作一些其他的事兒的時機(jī),這就是導(dǎo)航守衛(wèi),守衛(wèi)適用于切面編程,即把一件事切成好幾塊,然后分給不同的人去完成,提高工作效率,也可以讓代碼變得更加優(yōu)雅
    2022-09-09
  • vue?parseHTML函數(shù)解析器遇到結(jié)束標(biāo)簽

    vue?parseHTML函數(shù)解析器遇到結(jié)束標(biāo)簽

    這篇文章主要介紹了vue?parseHTML函數(shù)源碼解析之析器遇到結(jié)束標(biāo)簽的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • el-table實(shí)現(xiàn)嵌套表格的展示功能(完整代碼)

    el-table實(shí)現(xiàn)嵌套表格的展示功能(完整代碼)

    el-table中在嵌套一個el-table,這樣數(shù)據(jù)格式就沒問題了,主要就是樣式,將共同的列放到一列中,通過渲染自定義表頭render-header,將表頭按照合適的寬度渲染出來,本文給大家分享el-table實(shí)現(xiàn)嵌套表格的展示功能,感興趣的朋友一起看看吧
    2024-02-02

最新評論

衡山县| 平阳县| 当阳市| 固安县| 万荣县| 绥阳县| 高台县| 安化县| 曲阜市| 永寿县| 浦东新区| 红河县| 泸水县| 罗田县| 黄石市| 甘洛县| 肇州县| 炎陵县| 珲春市| 思南县| 柏乡县| 来凤县| 神池县| 高淳县| 凉城县| 双城市| 津南区| 安丘市| 涡阳县| 嫩江县| 武汉市| 长乐市| 嘉荫县| 绥芬河市| 朝阳县| 襄樊市| 葫芦岛市| 绥棱县| 博湖县| 涟水县| 富蕴县|