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 相关文章推荐
js加解密 脚本解密
Feb 22 Javascript
javascript AOP 实现ajax回调函数使用比较方便
Nov 20 Javascript
加载 Javascript 最佳实践
Oct 30 Javascript
JavaScript实现在页面间传值的方法
Apr 07 Javascript
jQuery实现动画效果circle实例
Aug 06 Javascript
Bootstrap基本布局实现方法详解
Nov 25 Javascript
JavaScript实现图片懒加载(Lazyload)
Nov 28 Javascript
ECMAScript6变量的解构赋值实例详解
Sep 19 Javascript
Angularjs实现多图片上传预览功能
Jul 18 Javascript
详解Vue-axios 设置请求头问题
Dec 06 Javascript
JS实现简单省市二级联动
Nov 27 Javascript
浅谈es6中的元编程
Dec 01 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
Mysql的常用命令
2006/10/09 PHP
PHP获取http请求的头信息实现步骤
2012/12/16 PHP
基于PHP遍历数组的方法汇总分析
2013/06/08 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
php实现根据身份证获取精准年龄
2020/02/26 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
JavaScript面向对象之静态与非静态类
2010/02/03 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
JS根据浏览器窗口大小实时动态改变网页文字大小的方法
2016/02/25 Javascript
浅谈js基本数据类型和typeof
2016/08/09 Javascript
vue-hook-form使用详解
2017/04/07 Javascript
jQuery+CSS实现的标签页效果示例【测试可用】
2018/08/14 jQuery
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
微信小程序 wxParse插件显示视频问题
2019/09/27 Javascript
JS面向对象之多选框实现
2020/01/17 Javascript
vue 里面的 $forceUpdate() 强制实例重新渲染操作
2020/09/21 Javascript
分析用Python脚本关闭文件操作的机制
2015/06/28 Python
python opencv实现运动检测
2018/07/10 Python
Python求两点之间的直线距离(2种实现方法)
2019/07/07 Python
python3模拟实现xshell远程执行liunx命令的方法
2019/07/12 Python
Python pandas用法最全整理
2019/08/04 Python
Python PyQt5运行程序把输出信息展示到GUI图形界面上
2020/04/27 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
python接口自动化之ConfigParser配置文件的使用详解
2020/08/03 Python
美国男士西装打折店:Jos. A. Bank
2017/11/13 全球购物
龟牌英国商店:Turtle Wax Brand Store UK
2019/07/02 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
如何写好自荐信
2014/04/07 职场文书
大学生村官考核材料
2014/05/23 职场文书
2014年班组建设工作总结
2014/12/01 职场文书
党员自我评价2015
2015/03/03 职场文书
2015年幼儿园教育教学工作总结
2015/05/25 职场文书
MySQL复制问题的三个参数分析
2021/04/07 MySQL
如何用JavaScript实现一个数组惰性求值库
2021/05/05 Javascript
了解Redis常见应用场景
2021/06/23 Redis