iView 是一套基于Vue.js的開(kāi)源UI組件庫(kù),主要服務(wù)于PC界面的中后臺(tái)產(chǎn)品。
1、iView的特性
1) 高質(zhì)量、功能豐富
2) 友好的API ,自由靈活地使用空間
3) 細(xì)致、漂亮的 UI
4) 事無(wú)巨細(xì)的文檔
5) 可自定義主題
2、iView的安裝:
1) 使用npm:
npm install --save iview
2) CDN引入:
<link rel="stylesheet" href="css/iview.css" rel="external nofollow" > <script src="js/iview.min.js"></script>
由于公司項(xiàng)目需要,所以目前搗鼓了vue+iview搭建了一個(gè)項(xiàng)目,用的環(huán)境都是1.0版本,在使用iview彈框中,由于需要先進(jìn)行彈框中表單的驗(yàn)證,驗(yàn)證通過(guò)才調(diào)用后臺(tái)接口,但是呢,iview彈框中的確定按鈕點(diǎn)擊一下彈框就消失了,怎么辦,要實(shí)現(xiàn)效果,各種翻看資料,最終解決辦法如下:
<template> <!--取消訂單彈框和老板批準(zhǔn)彈框--> <Modal :visible.sync="show" title="提示" :loading="loading" @on-ok="asyncOK"> <Row> <i-col span="3"></i-col> <i-col span="1" style="color:red;margin-top:7px;font-weight: bold">*</i-col> <i-col span="2" style="margin-top:5px;">授權(quán)碼</i-col> <i-col span="6"> <input class="ivu-input errorInput" type="number" v-model="code" placeholder="請(qǐng)輸入" @blur="codeBlur"> <div class="fade-transition ivu-form-item-error-tip error" style="display:none;position: static">驗(yàn)證碼錯(cuò)誤</div> </i-col> <i-col span="3" style="margin-left:5px;"> <i-button type="primary" :loading="loadingBtn" @click="toLoading"> <span v-if="!loadingBtn">{{btnText}}</span> <span v-else>{{btnText}}</span> </i-button> </i-col> </Row> </Modal> </template> <script type="text/javascript"> import { orderService } from 'jo' export default { props:["show"], data(){ return { loading:true, loadingBtn:false,//點(diǎn)擊申請(qǐng)取消按鈕后loading btnText:'申請(qǐng)取消訂單', code:"",//驗(yàn)證碼 clearTime:"",//定時(shí)器 countDownIndex:60,//60秒倒計(jì)時(shí) } }, methods:{ codeBlur(){ if(this.code == ""){ $(".errorInput").css("border","1px solid red") $(".error").css("display","block") }else{ $(".errorInput").css("border","1px solid #d7dde4") $(".error").css("display","none") } }, toLoading(){ //調(diào)用發(fā)送驗(yàn)證碼接口 // let operName = window.sessionStorage.getItem("userName") // accountService.recommenderGetCode(operName,this.selectDelteOne.recommender,1) this.countDown() }, countDown(){ //倒計(jì)時(shí) var that = this; that.loadingBtn = true that.btnText = that.countDownIndex+"秒" that.countDownIndex--; that.clearTime = setInterval(function(){ console.log(that.countDownIndex) if(that.countDownIndex == 0){ that.countDownIndex = 60 that.btnText = "發(fā)送" that.loadingBtn = false window.clearTimeout(that.clearTime) return false } that.btnText = that.countDownIndex+"秒" that.countDownIndex--; },1000) // } }, asyncOK(){ //提交 if(this.code == ""){ this.show = true console.log('sdasda'+this.show) $(".errorInput").css("border","1px solid red") $(".error").css("display","block") this.loading = false this.$nextTick(() => { this.loading = true;}); return } this.$nextTick(() => {this.loading = true; }); // let operId = window.sessionStorage.getItem("crmUserId") // let operName = window.sessionStorage.getItem("userName") // if(this.isApply){ // orderService.sendSingleUpdate03(this.data, 3, operName, operId, this.code).then(res => this.updateList(res.message)) // }else{ // orderService.sendSingleUpdate03(this.data, 2, operName, operId, this.code).then(res => this.updateList(res.message)) // } } } } </script>
大概思路就是先命名一個(gè)變量loading,這里必須為true,然后在點(diǎn)擊彈框的提交按鈕的時(shí)候先把loading設(shè)置為false,然后必須加上
this.$nextTick(() => { this.loading = true;});就能實(shí)現(xiàn)效果啦,具體實(shí)現(xiàn)原理,這坑遇到了,就先記錄下來(lái)
傳送門(mén)-->https://github.com/iview/iview/issues/597#issuecomment-292422473
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com