vue中节流函数实现搜索数据

在日常开发中有很多场景我们都需要用到节流函数和防抖函数,比如:实现输入框的模糊查询因为需要轮询ajax,影响浏览器性能,所以需要用到节流函数;实现手机号、姓名之类的的验证,往往我们只需要验证一次,这个时候我们就需要用到防抖函数;但是网上的很多资料都是不够具体和便于理解。

基本代码如下

 <el-input placeholder="请输入搜索内容" suffix-icon="el-icon-search" class="searchItem searchInput" v-
    model.trim="keyword">
</el-input>
     <div class="taskList">
        <el-table ref="multipleTable" :data="userListData.rows" id="taskList" tooltip-effect="dark" v-loading="loading" element-loading-text="数据加载中" element-loading-background="rgba(0, 0, 0, 0.6)" style="width: 100%" border fit stripe>
          <el-table-column type="index" :index="indexMethod" label="序号" width="60">
          </el-table-column>
          <el-table-column prop="name" label="名称" show-overflow-tooltip>
          </el-table-column>
          <el-table-column prop="address" label="地址" show-overflow-tooltip>
          </el-table-column>
          <el-table-column prop="phone" label="电话" show-overflow-tooltip>
          </el-table-column>
          <el-table-column prop="principal" label="负责人" show-overflow-tooltip>
          </el-table-column>
          <el-table-column label="操作" width="200">
            <template slot-scope="scope">
              <el-button type="success" size="small" plain @click="goDetail(scope.row.id)" v-if="menus.USER_CUST_VIEW">查看</el-button>
              <!-- <el-button type="primary" size="small" plain @click="goUrl(`/zz/editUser/u/${scope.row.userId}`)">编辑</el-button> -->
              <el-button type="danger" size="small" plain @click="removeUser(scope.row.id)" >删除</el-button>
            </template>
          </el-table-column>
        </el-table>
      </div>
      <div class="pagination-container">
        <el-pagination background @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="userListData.pageNumber" :page-sizes="[10,20,30, 50]" :page-size="userListData.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="userListData.total">
        </el-pagination>
      </div>

基本代码如下

import _ from ‘lodash‘
export default{
    computed:{
searchContent() {
      return this.keyword
    },
  watch: {
    // 如果 `question` 发生改变,这个函数就会运行
    searchContent: function(newQuestion, oldQuestion) {
      this.userListData.pageNumber = 1
      this.getAccountUserListDebounce()
    }
  },
    getAccountUserListDebounce: _.debounce(
      function() {
        this.getList()
      },
      // 这是我们为判定用户停止输入等待的毫秒数
      500
    ),
    getList() {
      this.loading = true
      mytomer(this.keyword, this.userListData.pageSize, this.userListData.pageNumber, null).then(res => {
        this.loading = false
        this.userListData.total = res.data.total
        this.userListData.rows = res.data.rows
      }).catch(error => {
        this.loading = false
      })
    },

}

}

原文地址:https://www.cnblogs.com/smart-girl/p/12605728.html

时间: 2024-07-30 05:32:52

vue中节流函数实现搜索数据的相关文章

VUE中的函数的防抖和节流 以及应用场景

先看看概念 函数防抖(debounce): 在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时:典型的案例就是输入搜索:输入结束后n秒才进行搜索请求,n秒内又输入的内容,就重新计时. 应用场景: search搜索联想,用户在不断输入值时,用防抖来节约请求资源. window触发resize的时候,不断的调整浏览器窗口大小会不断的触发这个事件,用防抖来让其只触发一次 函数节流(throttle): 规定在一个单位时间内,只能触发一次函数,如果这个单位时间内触发多次函数,只有一次生效:

【Vue】彻底理解Vue中render函数与template的区别

一.render函数与template对比 VUE一般使用template来创建HTML,然后在有的时候,我们需要使用javascript来创建html,这时候我们需要使用render函数. 以下我们来做一个需求跟根据level等级来编写对应等级的标题 template解析 <body>   <divid="app">       <h-titlelevel=1>           <p>li</p>       </

Vue中实现与后台的数据交换(vue-resource)

vue-resource是Vue.js的一款插件,它可以通过XMLHttpRequest或JSONP发起请求并处理响应.(但是目前它已经停止更新了) 1.在vue中安装vue-resource插件 打开vue项目文件夹下的package.json 添加vue-resource版本 再打开src下的main.js文件,import一下vue-resource 然后运行一下vue的项目,项目会提示你下载vue-resource插件,npm install一下即可 2.创建一个新的vue页面,用来测试

vuex 实现vue中多个组件之间数据同步以及数据共享。

前言 在一些项目中有很多数据状态之间要实现数据共享状态共享,例如购物车的数据.用户的登录状态等等.vue父元素是可以通过props向子元素传递参数,子元素也可以通用smit向父元素传递参数.但是像购物车这种在项目中多个位置的引用时就会变得很麻烦.例如项目中使用了三个购物车的组件,那么当其中一个组件的值发生改变时,就要通过自身告诉父组件我的值发生改变了,然后父组件在通知其他两个购物车组件值发生改变了,需要进行同步,这样就会变得很麻烦.而vue-v就可以帮助我们解决这个繁琐的问题.

vue中钩子函数的用法

这么多钩子函数,我们怎么用呢,我想大家可能有这样的疑问吧,我也有,哈哈哈. beforecreate : 举个栗子:可以在这加个loading事件 created :在这结束loading,还做一些初始化,实现函数自执行 mounted: 在这发起后端请求,拿回数据,配合路由钩子做一些事情 beforeDestory: 你确认删除XX吗? destoryed :当前组件已被删除,清空相关内容 当然,还有更多,继续探索中-- 原文地址:https://www.cnblogs.com/zr123/p

vue中render函数的使用

render函数 vue通过 template 来创建你的 HTML.但是,在特殊情况下,这种写死的模式无法满足需求,必须需要js的编程能力.此时,需要用render来创建HTML. 什么情况下适合使用render函数 在一次封装一套通用按钮组件的工作中,按钮有四个样式(success.error.warning.default).首先,你可能会想到如下实现 <div class="btn btn-success" v-if="type === 'success'&qu

在Vue中使用mock模拟接口数据

一.在配置文件里添加新的代理mock模拟数据的地址(如下) 二.使用接口地址 原文地址:https://www.cnblogs.com/exclusiveMemory/p/9842515.html

vue中find函数

let obj = this.role.find(v => v.code === res.company.role)循环 data对象中的role数组 ,每个数组元素用v代替,code为他的键,返回找到的数组元素对象. 原文地址:https://www.cnblogs.com/erfsfj-dbc/p/10063533.html

H5 localstorage本地缓存数据的封装以及在vue中的使用

vue中常用的 每次增加数据   要缓存                     每次删除数据也要缓存  storage.js 文件 然后某个页面需要本地存储,就需要用 import引入:import storage from './storage.js' App.vue页面: <template> <div id="app"> <input type="text" v-model='todo' @keydown="doAdd