vue+iview写个弹框的示例代码


Posted in Javascript onDecember 05, 2017

iView 是一套基于Vue.js的开源UI组件库,主要服务于PC界面的中后台产品。

1、iView的特性

1) 高质量、功能丰富
2) 友好的API ,自由灵活地使用空间
3) 细致、漂亮的 UI
4) 事无巨细的文档
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>

由于公司项目需要,所以目前捣鼓了vue+iview搭建了一个项目,用的环境都是1.0版本,在使用iview弹框中,由于需要先进行弹框中表单的验证,验证通过才调用后台接口,但是呢,iview弹框中的确定按钮点击一下弹框就消失了,怎么办,要实现效果,各种翻看资料,最终解决办法如下:

<template> 
  <!--取消订单弹框和老板批准弹框--> 
   <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;">授权码</i-col> 
      <i-col span="6"> 
       <input class="ivu-input errorInput" type="number" v-model="code" placeholder="请输入" @blur="codeBlur"> 
       <div class="fade-transition ivu-form-item-error-tip error" style="display:none;position: static">验证码错误</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,//点击申请取消按钮后loading 
        btnText:'申请取消订单', 
        code:"",//验证码 
        clearTime:"",//定时器 
        countDownIndex:60,//60秒倒计时 
      } 
    }, 
    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(){ 
          //调用发送验证码接口 
   //      let operName = window.sessionStorage.getItem("userName") 
            // accountService.recommenderGetCode(operName,this.selectDelteOne.recommender,1) 
          this.countDown()   
 
      }, 
      countDown(){ 
          //倒计时 
          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 = "发送" 
                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>

大概思路就是先命名一个变量loading,这里必须为true,然后在点击弹框的提交按钮的时候先把loading设置为false,然后必须加上

this.$nextTick(() => { this.loading = true;});就能实现效果啦,具体实现原理,这坑遇到了,就先记录下来  

传送门-->https://github.com/iview/iview/issues/597#issuecomment-292422473 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JQuery调webservice实现邮箱验证(检测是否可用)
May 21 Javascript
在JavaScript中实现类的方式探讨
Aug 28 Javascript
Javscript调用iframe框架页面中函数的方法
Nov 01 Javascript
原生javascript实现图片滚动、延时加载功能
Jan 12 Javascript
jQuery设置指定网页元素宽度和高度的方法
Mar 25 Javascript
js实现跨域的方法实例详解
Jun 24 Javascript
jfinal与bootstrap的登录跳转实战演习
Sep 22 Javascript
详解用vue编写弹出框组件
Jul 04 Javascript
如何为vue的项目添加单元测试
Dec 19 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
Nov 06 Javascript
微信小程序实现录音Record功能
May 09 Javascript
关于JavaScript回调函数的深入理解
Jun 27 Javascript
Node.js创建Web、TCP服务器
Dec 05 #Javascript
实例讲解javascript实现异步图片上传方法
Dec 05 #Javascript
jquery如何实现点击空白处隐藏元素
Dec 05 #jQuery
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
Dec 05 #jQuery
最实用的JS数组函数整理
Dec 05 #Javascript
微信小程序picker组件简单用法示例【附demo源码下载】
Dec 05 #Javascript
Vue DevTools调试工具的使用
Dec 05 #Javascript
You might like
php中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
javascript 获取表单file全路径
2009/12/31 Javascript
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
js 判断浏览器使用的语言示例代码
2014/03/22 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
js实现非常棒的弹出div
2016/10/06 Javascript
js的OOP继承实现(必看篇)
2017/02/18 Javascript
Iscrool下拉刷新功能实现方法(推荐)
2017/06/26 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
如何解决vue2.0下IE浏览器白屏问题
2018/09/13 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)
2020/02/05 Javascript
Python中利用原始套接字进行网络编程的示例
2015/05/04 Python
Python使用回溯法子集树模板解决爬楼梯问题示例
2017/09/08 Python
python在ubuntu中的几种安装方法(小结)
2017/12/08 Python
Python实现接受任意个数参数的函数方法
2018/04/21 Python
利用python在excel里面直接使用sql函数的方法
2019/02/08 Python
Python实现爬取马云的微博功能示例
2019/02/16 Python
python3 深浅copy对比详解
2019/08/12 Python
Python整数与Numpy数据溢出问题解决
2019/09/11 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
俄罗斯便宜的在线服装商店:GroupPrice
2020/04/10 全球购物
春节活动策划方案
2014/01/24 职场文书
《搭石》教学反思
2014/04/07 职场文书
高中教师评语大全
2014/04/25 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书
如何制作自己的原生JavaScript路由
2021/05/05 Javascript
go语言基础 seek光标位置os包的使用
2021/05/09 Golang
Vue鼠标滚轮滚动切换路由效果的实现方法
2021/08/04 Vue.js