el-input输入框的监听以及防抖节流的实现

src/utils/debounceModule.js


// 节流
export function throttleFun(fn, wait = 500) {
    let last, now
    return function () {
        now = Date.now()
        if (last && now - last < wait) {
            last = now
        } else {
            last = now
            fn.call(this, ...arguments)
        }
    }
}

// 防抖
export function debounceFun(fn, wait = 500) {
    let timer
    return function () {
        let context = this
        let args = arguments
        if (timer) clearTimeout(timer)
        timer = setTimeout(() => {
            fn.apply(context, args)
        }, wait)
    }
}

使用

 <el-input
        placeholder="请输入关键词..."
        prefix-icon="el-icon-search"
        v-model="search"
      >
      </el-input>

import { debounceFun, throttleFun } from "@/utils/debounceModule";
// 监听搜索框内容的变化,等输入完成才会执行搜索函数(防抖)
 watch: {
    search: debounceFun(function (newData, oldData) {
        console.log(newData, oldData)
    })
  },
// 搜索,短时间内连续点击搜索按钮只执行一次搜索函数(节流)
// searchBtn: throttleFun(function() {
//     if (this.searchValue) {
//         this.getList()
//     }
// }),

methods: {
    onInput: debounceFun(function () {
      let ak = '百度地图ak'
      let url = `/place/v2/suggestion?query=${this.searchText}&region=中国&city_limit=false&output=json&ak=${ak}`
      this.$axios.get(url).then(res => {
        this.restaurants = res.data.result
      })
    }, 1000),

}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以告诉你如何动态添加el-input输入框。首先,你需要定义一个基本的el-input组件,然后在你的组件内部使用Vue的v-for指令来渲染输入框,如果需要,你还可以使用v-model来收集数据。 ### 回答2: 动态添加el-input输入框需要借助Vue的动态组件和v-for指令实现。具体步骤如下: 1. 在Vue的模板中,使用el-button按钮来触发添加输入框的事件。例如: ```html <el-button type="primary" @click="addInput">添加输入框</el-button> ``` 2. 在Vue的data属性中定义一个数组,用于存储动态生成的输入框的数量和内容。例如: ```javascript data() { return { inputList: [] } } ``` 3. 在Vue的方法中,实现添加输入框的逻辑。例如: ```javascript methods: { addInput() { // 每次添加输入框时,给inputList数组中添加一个空字符串 this.inputList.push(''); } } ``` 4. 在Vue的模板中,使用v-for指令遍历inputList数组,并为每个数组项动态生成一个el-input输入框。例如: ```html <div v-for="(input, index) in inputList" :key="index"> <el-input v-model="input" placeholder="请输入内容"></el-input> </div> ``` 这样,每次点击"添加输入框"按钮时,就会在页面上动态添加一个新的el-input输入框。 需要注意的是,使用v-model指令绑定每个el-input的输入内容,通过inputList数组中相应的项来实现数据的双向绑定。这样就能够实现动态添加el-input输入框的功能。 ### 回答3: 动态添加el-input输入框的方法有很多种,可以通过编程语言的相关操作来实现。以下是一种示例方法: 1. 首先,在页面上的某个位置添加一个按钮或其他触发元素,用于动态添加el-input输入框。 2. 给按钮或触发元素添加点击事件的监听器。 3. 在点击事件的处理函数中,通过编程语言的DOM操作方法,生成一个新的el-input输入框元素。 4. 设置新生成的el-input输入框元素的相关属性,例如 input类型、占位符、样式等。 5. 将新生成的el-input输入框元素添加到页面上的合适位置,可以通过将其插入到一个容器元素中。 6. 重复以上步骤,即可实现动态添加多个el-input输入框。 需要注意的是,以上只是一种实现方法的示例,具体的实现方式可能根据具体的技术栈和项目需求有所不同。在实际应用中,还需要考虑如何管理和处理动态添加的el-input输入框,以及其它相关操作的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值