国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue element-ui 常用事件方法

這篇具有很好參考價(jià)值的文章主要介紹了vue element-ui 常用事件方法。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

1. 前提

已安裝elementUI并正確引入

2. 參數(shù)說明

參數(shù) 說明
:action 是執(zhí)行上傳動(dòng)作的后臺接口,本文置空采用http-request取而代之?dāng)r截請求,進(jìn)行文件上傳
:multiple="true" 設(shè)置是否可以同時(shí)選中多個(gè)文件上傳,這個(gè)也是<input type='file'>的屬性
:limit="1" 上傳文件數(shù)量,設(shè)置最多可以上傳的文件數(shù)量,超出此數(shù)量后選擇的文件是不會(huì)被上傳的。
:on-exceed 綁定的方法則是處理文件超出限制數(shù)量后的動(dòng)作
:file-list="fileList" 用于顯示已上傳文件列表,其中fileList是數(shù)組對象,初始為空。
參數(shù) 說明
accept="image/jpeg,image/gif,image/png" 限制上傳文件的格式

具體可參考HTML5 input file類型,accept(文件類型控制)

  • 這個(gè)是直接使用<input type='file'>一樣的屬性了,accept屬性的值可以是accept="image/gif, image/jpeg, text/plain, application/pdf"等等.
  • 添加了accept屬性僅僅是選擇文件時(shí)限制格式,其實(shí)用戶還是可以點(diǎn)選“所有文件”選項(xiàng),上傳其他格式。
  • 如果需要在上傳時(shí)校驗(yàn)文件格式,則需要在:before-uploadon-change這個(gè)鉤子綁定相應(yīng)的方法來校驗(yàn),具體校驗(yàn)方法查看3. 頁面中使用中的beforeUploadhandleChange方法
參數(shù) 說明
abort 取消上傳請求
this.$refs.upload.abort( file);/ /這里的file為fileList 中的 file 對象
參數(shù) 說明
slot="tip 用于添加提示如正確的文件格式應(yīng)該為***,如
<div slot="tip" class="el-upload__tip">請上傳圖片格式文件</div>
參數(shù) 說明
abort 取消上傳請求
this.$refs.upload.abort( file);/ /這里的file為fileList 中的 file 對象

其他參數(shù)具體參考
elementUI官方API文檔>upload

3. 頁面中使用

  • template
<template>
    <el-upload
        :class="{disabled:preview||fileIds.length===1}"
        ref="upload"
        action
        list-type="picture-card"
        :file-list="fileList"
        :disabled="preview"
        accept="image/jpeg,image/gif,image/png"
        :multiple="true"
        :limit="1"
        :auto-upload="true"
        :on-preview="handlePictureCardPreview"
        :before-remove="beforeRemove"
        :http-request="getUploadFile"
        :before-upload="beforeUpload"
        :on-remove="handleRemove"
        :on-change="handleChange"
        :on-progress="onProgress"
        :on-error="handleError"
        :on-exceed="handleExceed"
    >
        <!-- 觸發(fā)上傳的按鈕 -->
        <i class="el-icon-plus"></i>
        <div slot="tip" class="el-upload__tip">請上傳圖片格式文件</div>
    </el-upload>
</template>
  • script
<script>
export default {
    data() {
        return {   
            /* 文件上傳區(qū) */
            fileList: [], // 文件列表
            isValidUpload: true, // 圖片是否符合要求
            delFileUid: '', // 待刪除的圖片uid
            dialogImageUrl: '', // 預(yù)覽的圖片地址
            dialogVisible: false, // 是否顯示-預(yù)覽圖片
            fileObj: {}, // 待上傳文件
            fileIds: [], // 存放文件uid與后臺傳過來的id
            imgId: [] // 需要上傳的后端返回的文件ID
        };
    },
    methods:{
        // --------------------el-upload上傳文件-開始--------------------
        // 圖片預(yù)覽-on-preview-事件
        handlePictureCardPreview(file) {
            this.dialogImageUrl = file.url;
            this.dialogVisible = true;
        },

        // 文件上傳
        // autoUpload

        // 文件上傳-on-exceed-事件-文件超出個(gè)數(shù)限制時(shí)的鉤子
        handleExceed(files, fileList) {
            this.$message.warning(`當(dāng)前限制選擇 5 個(gè)文件,請重新選擇`);
        },

          // 文件上傳-on-change-事件-文件狀態(tài)改變時(shí)的鉤子,添加文件、上傳成功和上傳失敗時(shí)都會(huì)被調(diào)用
        handleChange(file, fileList) {
            // console.log('handleChange>', 'file', file, 'fileList', fileList);
            // console.log('file.type', file.raw.type);
            const isPNG = file.raw.type === 'image/png';
            const isLt2M = file.size / 1024 / 1024 < 2;
            let errMsg = '';
            if (!isPNG) {
                errMsg = '上傳圖片只能是 JPG 格式!';
                // this.$message.error('上傳圖片只能是 JPG 格式!');
                fileList = fileList.pop();
            } else if (!isLt2M) {
                errMsg = '上傳圖片大小不能超過 2MB!';
                // this.$message.error('上傳圖片大小不能超過 2MB!');
                fileList = fileList.pop();
            }
            this.isValidUpload = isPNG && isLt2M;
            if (!this.isValidUpload) {
                this.$confirm(`${errMsg}`, '系統(tǒng)提示', {
                    confirmButtonText: '確定',
                    cancelButtonText: '取消',
                    showCancelButton: false,
                    customClass: 'confirm-success',
                    type: 'error'
                })
                    .then(() => {
                        //
                    })
                    .catch(() => {
                        //
                    });
            }
            return this.isValidUpload;
        },

        // 文件上傳-before-upload-事件-文件上傳前
        beforeUpload(file) {
            // console.log('beforeUpload>', 'file', file);
            this.fileObj = new FormData();
            this.fileObj.append('file', file, file.name);
            console.log('beforeUpload>', 'file', file, 'fileObj', this.fileObj);
            if (file.type.split('/')[0] === 'image') {
                let _this = this;
                let reader = new FileReader();
                // let fileNew = event.target.files[0];// 寫在beforupload時(shí)注釋掉此行,在handleChange中時(shí)取消此行的注釋
                reader.readAsDataURL(file);
                reader.onload = function(theFile) {
                    let image = new Image();
                    image.src = theFile.target.result;
                    image.onload = function() {
                        if (!_this.creativeSize(this.width, this.height)) {
                            _this.$message.info(
                                `${file.name}尺寸為${this.width}*${this.height},圖片最佳比例為 560 * 670 !`
                            );
                            file.width = this.width;
                            file.height = this.height;
                            console.log(file.width, file.height);
                        } else {
                            file.width = this.width;
                            file.height = this.height;
                            console.log(file.width, file.height);
                        }
                    };
                };
            };
        },

        // 方法-計(jì)算圖片比例是否符合要求
        creativeSize(width, height) {
            let minWidth = 560;
            let minHeight = 670;
            let isCreativeSize = true;
            if (width * minHeight > height * minWidth) {
                isCreativeSize =
                    width - Math.ceil((height * minWidth) / minHeight) < 2;
            } else {
                isCreativeSize =
                    height - Math.ceil((width * minHeight) / minWidth) < 2;
            }

            if (width < minWidth || height < minHeight) {
                // this.$message.error(`像素不夠`);
                return false;
            } else if (isCreativeSize) {
                return true;
            } else {
                return false;
            }
        },

        // 文件上傳-http-request-事件-攔截請求
        getUploadFile(fileObj) {
            // console.log('getUploadFile>', 'fileObj', fileObj);
            // 上傳圖片
            if (this.isValidUpload) {
                // 請求接口-上傳圖片
                this.uploadFile(this.fileObj).then(res => {
                    // console.log('uploadFile', res);
                    if (res.code === 1) {
                        this.fileIds.push({
                            uid: fileObj.file.uid,
                            imgId: res.data
                        });
                    }
                    // console.log('uploadFile>','fileIds', this.fileIds);
                });
            }
        },

        // 文件上傳-on-progress-事件
        onProgress(event, file, fileList) {
            // console.log('onProgress', response, file, fileList);
        },

        // 文件上傳-before-remove-事件-移除文件前
        beforeRemove(file, fileList) {
            // console.log('beforeRemove>','file', file);
            return this.$confirm(`確定移除 ${file.name}?`);
        },

        // 文件上傳-on-remove-事件-移除文件后
        handleRemove(file, fileList) {
            for (let i = 0; i < this.fileIds.length; i++) {
                if (this.fileIds[i].uid === file.uid) {
                    if (!this.delFileUid) {
                        this.delFileUid = this.fileIds[i].imgId;
                    } else {
                        this.delFileUid =
                            `${this.delFileUid},` + this.fileIds[i].imgId;
                    }
                    this.fileIds.splice(i, 1);
                }
            }
            // console.log('handleRemove>', 'delFileUid', this.delFileUid);
            let params = {
                id: this.delFileUid
            };
            this.delsData(params);
        },

        // 接口-刪除文件
        delsData(params) {
            if (this.delFileUid) {
                this.dels({ ids: this.delFileUid }).then(res => {
                    // console.log('dels', res);
                    this.delFileUid = '';
                    console.log('delsData>', 'delFileUid', this.delFileUid);
                });
            }
        },

        // 文件上傳-on-error-事件
        handleError(err, file, fileList) {
            console.log('handleError', err, file, fileList);
        },
       
        // --------------------el-upload上傳文件-結(jié)束-------------------- *

        // 表單提交
        submit(formName) {
            console.log('ruleForm',this.ruleForm);
            this.$refs[formName].validate(valid => {
                if (valid) {
                    console.log('submit');
                    let imgId = [];
                    for (let i = 0; i < this.fileIds.length; i++) {
                        imgId.push(this.fileIds[i].imgId);
                    }
                    let params = {
                        name: this.ruleForm.name,
                        fileIds: imgId
                    };
                    // 提交接口
                    this.interfaceName(params)
                        .then(res => {
                            console.log(res);
                            if (res.code === 1) {
                                this.$confirm(`提交成功`, '系統(tǒng)提示', {
                                    confirmButtonText: '確定',
                                    cancelButtonText: '取消',
                                    showCancelButton: false,
                                    customClass: 'confirm-success',
                                    type: 'success'
                                })
                                    .then(() => {
                                        this.$router.push('');
                                    })
                                    .catch(() => {
                                        // this.$message.info('已取消');
                                    });
                            } else {
                                // this.$message.error(res.msg);
                            }
                            this.fileIds = [];// 清除待文件序列
                            this.resetFormDetail();
                            this.$refs.upload.clearFiles();// 清除上傳列表
                        })
                        .catch(err => {
                            console.log(err);
                        });
                } else {
                    console.log('error submit!!');
                    return false;
                }
            });
        },

        // 方法-重置表單
        resetFormDetail() {
            this.formDetail.name = '';
        },
    }
}
</script>

二、input等的change事件中傳遞自定義參數(shù)


通過鼠標(biāo)或鍵盤輸入字符

Input 為受控組件,它總會(huì)顯示 Vue 綁定值。
通常情況下,應(yīng)當(dāng)處理 input 事件,并更新組件的綁定值(或使用v-model)。否則,輸入框內(nèi)顯示的值將不會(huì)改變。
不支持 v-model 修飾符。

一、無效寫法

@change="doSomething(val, index)"

<div v-for="(item,index) in itemList">
   <el-input v-model="item.value" @change="doSomething(val, index)"> </el-input >
</div>

二、有效寫法

@change="((val)=>{changeStatus(val, index)})"

<div v-for="(item,index) in itemList">
   <el-input v-model="item.value" @change="((val)=>{doSomething(val, index)})"> </el-input>
 </div>


https://www.jianshu.com/p/3401d353eda4。文章來源地址http://www.zghlxwxcb.cn/news/detail-412844.html

到了這里,關(guān)于vue element-ui 常用事件方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • vue element-ui el-input輸入框綁定@keyup.enter回車事件無效

    由于element-ui把input進(jìn)行了封裝,input外面是多一層div的。 在element-ui里有很多因?yàn)樽陨矸庋b了幾層標(biāo)簽導(dǎo)致事件和樣式無法按想要的效果呈現(xiàn),遇到后可以在網(wǎng)頁中查看dom結(jié)構(gòu)分析原因。 所以對于el-input,使用 @keyup.enter是無效的,需要加上 .native 限制符 .native修飾符的作用:

    2024年02月16日
    瀏覽(38)
  • vue怎么安裝element-ui教程

    vue怎么安裝element-ui教程

    1.在項(xiàng)目中打開cmd命令窗口,輸入命令---- npm i element-ui -S命令 圖1 安裝成功: 圖2 2.安裝成功,將其引入到自己的項(xiàng)目中,具體操作步驟如下: 在main.js文件中 引入 element 組件? : import ElementUI from \\\'element-ui\\\' import \\\'element-ui/lib/theme-chalk/index.css\\\' ?Vue.use(ElementUI) 圖3 (1)如何判斷

    2023年04月18日
    瀏覽(17)
  • Vue2.0安裝Element-ui

    Vue2.0安裝Element-ui

    1.在項(xiàng)目終端輸入 如果想知道是否安裝成功 ? 2.隨后在main.js里引入element組件 然后去使用element ? 就這樣成功了 ?

    2024年02月16日
    瀏覽(19)
  • Vue中使用element-ui 給按鈕綁定一個(gè)單擊事件,實(shí)現(xiàn)點(diǎn)擊按鈕就彈出一個(gè)dialog對話框

    Vue中使用element-ui 給按鈕綁定一個(gè)單擊事件,實(shí)現(xiàn)點(diǎn)擊按鈕就彈出一個(gè)dialog對話框

    1.需求描述 想要實(shí)現(xiàn)點(diǎn)擊一個(gè)按鈕就彈出一個(gè)對話框,在對話框中可輸入數(shù)據(jù)進(jìn)行提交,在點(diǎn)擊取消時(shí)對話框關(guān)閉 2.功能實(shí)現(xiàn) 1.創(chuàng)建按鈕 在element中把找到按鈕的代碼放到div里 2.創(chuàng)建對話框 在element中找到dialog對話框?qū)?yīng)的代碼,把代碼粘貼到對應(yīng)的位置 3.對話框與按鈕的綁定

    2024年01月18日
    瀏覽(104)
  • #html直接引用vue和element-ui的方法

    可以在官網(wǎng)下載vue和element-ui到本地,直接引入。也可以用npm下載依賴后,將指定的文件保存到HTML項(xiàng)目的js文件夾中,以下為引用方法: 1.引入vue 2.引入element-ui (1).js (2).css (3).icon圖標(biāo) 3.使用

    2024年02月12日
    瀏覽(24)
  • vue項(xiàng)目element-ui上傳組件自定義方法無法獲取進(jìn)度

    原因:element-ui中的up-load組件使用時(shí),若用自定義上傳http-request,會(huì)重新申明XMLHttpRequest,on-progress里的申明則被覆蓋,無法使用該鉤子,無法添加進(jìn)度條 方案一:假進(jìn)度條;寫個(gè)假進(jìn)度條優(yōu)化用戶體驗(yàn),使用el-upload組件里on-change方法的status狀態(tài),配合定時(shí)器 ,以vue3為例 ,

    2024年02月15日
    瀏覽(24)
  • 【Vue】Element-UI按需引入項(xiàng)目啟動(dòng)報(bào)錯(cuò)解決方法

    【Vue】Element-UI按需引入項(xiàng)目啟動(dòng)報(bào)錯(cuò)解決方法

    原因可能是版本不匹配的原因, Vue-Cli 腳手架的版本跟 element-ui 不一致了,按官網(wǎng)的配置已經(jīng)不太行了。 報(bào)錯(cuò)代碼 解決方式 在 babel.config.js 將 es2015 進(jìn)行替換成 @babel/preset-env 。 啟動(dòng)項(xiàng)目 明顯最終的JS文件的大小少了一些。

    2024年02月14日
    瀏覽(22)
  • Vue使用element-ui/plus組件布局容器container失效解決方法

    這個(gè)錯(cuò)我遇到了好幾次,每一次都花了很長時(shí)間解決,還是決定寫個(gè)筆記記錄一下。 在使用elementu官網(wǎng)的布局容器時(shí),他是這樣的。 我在確定elementui引入正確的情況下是這樣寫的。 注意,我在SideNav,Header,Main,Footer組件套了el-aside,el-header... 然后暴露出來在Home中引用。 當(dāng)然錯(cuò)

    2024年02月11日
    瀏覽(24)
  • [vue+element-ui] form中輸入框無法輸入問題的解決方法

    [vue+element-ui] form中輸入框無法輸入問題的解決方法

    目錄 一.問題發(fā)現(xiàn): 二.正確案例與錯(cuò)誤原理: 三.問題解決 筆者在制作登錄頁面前端時(shí)使用elementui+vue技術(shù),發(fā)現(xiàn)輸入框無法輸入任何內(nèi)容。 在csdn上查閱很多文章后發(fā)現(xiàn)都無法解決,于是去elementui官網(wǎng)進(jìn)行反復(fù)查看才發(fā)現(xiàn)問題所在。 最終發(fā)現(xiàn)問題是input標(biāo)簽中v-model寫的不恰

    2024年02月02日
    瀏覽(17)
  • Vue2使用element-ui引入自定義主題的方法(使用在線主題生成工具)

    Vue2使用element-ui引入自定義主題的方法(使用在線主題生成工具)

    第一步 :按照官方文檔使用npm安裝element-ui,并完整引入Element-ui npm i element-ui -S ?main.js中所有的內(nèi)容刪去,改為 隨便寫點(diǎn)東西,run一下 成功引入element-ui,但是不喜歡默認(rèn)的藍(lán)色,看起來很爛大街,想換掉。 第二步 :由于不喜歡默認(rèn)的藍(lán)色主題,可以使用在線主題生成工具

    2024年02月14日
    瀏覽(26)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包