zoukankan      html  css  js  c++  java
  • vue之elementui的异步表单,防抖,节流验证,之做进vuex之actions

    1>vue页面

     data() {
        let validcodeName = (rule, value, callback) => {
          let parmas = {
            name: value,
            rule: rule,
            callback: callback
          };
          this.getProjectByName(parmas);
        };
        return {
    rules: {
    //注意,不管是防抖还是节流,都得在这里去加,不能加在
    validcodeName里面
    
    
     demandName: [{ required: true, validator: this.debounce(validcodeName, 1000), trigger: 'change' }],

    }
    }
     methods: {
        
    ...mapActions(['getFunctionByName']),
        //发送请求
        sendGetFunctionByName(rule, value, callback) {
          let parmas = {
            name: value,
            projectId: this.$route.query.id,
            type: '需求',
            rule: rule,
            callback: callback
          };
          this.getFunctionByName(parmas);
        },
        //防抖
        debounce(fn, delay) {
          // 记录上一次的延时器
          var timer = null;
          var delay = delay || 200;
          return function() {
            var args = arguments;
            var that = this;
            // 清除上一次延时器
            clearTimeout(timer);
            timer = setTimeout(function() {
              fn.apply(that, args);
            }, delay);
          };
        },
        //节流
        throttle(fn, wait) {
          var timer = null;
          return function() {
            var context = this;
            var args = arguments;
            if (!timer) {
              timer = setTimeout(function() {
                fn.apply(context, args);
                timer = null;
              }, wait);
            }
          };
        },

    actions

      actions: {
        getProjectByName(context, data) {
          console.log("22", data);
          let params = {
            name: data.name
          };
          SourceMirror.getProjectByName(params).then(res => {
            if (res.data.data === false) {
              data.callback(new Error("项目名称已重复"));
            } else if (
              data.name == undefined ||
              data.name == "" ||
              data.name == null
            ) {
              data.callback(new Error("请输入项目名称"));
            } else {
              data.callback();
            }
            context.commit("verifProjectByName", res.data.data);
          });
        }
      },

     2>场景,blur的input离开就发送修改接口,但是与页面上其他事件冲突,必须请求完了才允许点,这时候就需要防抖了

       <input
                :class="{'isFocus':isFocus|| detail.expectHours}"
                id="inputRef"
                :disabled="saveHandleStatus==4"
                v-model="detail.expectHours"
                @focus="isFocus= true"
                @blur="debounce(hoursBlur,2000)()"  //
                class="hours"
                :placeholder="placeholder"
              />
    @blur="debounce(hoursBlur,2000)()"  //注意这个写法,不这样写,不执行
  • 相关阅读:
    [NOI2015]软件包管理器(树链剖分)
    [题解][luogu p1273]有线电视网
    [题解][洛谷P1373 小a和uim之大逃离]
    《LoadRunner 没有告诉你的》之五——无所不在的性能测试 (已完稿)
    《LoadRunner没有告诉你的》之六——获取有效的性能需求
    《LoadRunner 没有告诉你的》之一——描述性统计与性能结果分析
    《LoadRunner 没有告诉你的》之四——理解性能
    《LoadRunner 没有告诉你的》之三——理发店模型
    人活着就是要学会持续的奔跑!【二】
    人活着就是要学会持续的奔跑!【一】
  • 原文地址:https://www.cnblogs.com/lsc-boke/p/12982650.html
Copyright © 2011-2022 走看看