当前位置: 首页 > news >正文

盂县在线这个网站是谁做的物流托运

盂县在线这个网站是谁做的,物流托运,html网页制作大作业范例,佛山网站的优化防抖与节流,应用场景有很多,例如:禁止重复提交数据的场景、搜索框输入搜索条件,待输入停止后再开始搜索。 防抖 点击button按钮,设置定时器,在规定的时间内再次点击会重置定时器重新计时,在规定…

防抖与节流,应用场景有很多,例如:禁止重复提交数据的场景、搜索框输入搜索条件,待输入停止后再开始搜索。



防抖

  • 点击button按钮设置定时器,在规定的时间内再次点击会重置定时器重新计时,在规定的时间没有再次点击才执行相关函数。
  • 规定时间内最后一次点击有效。

节流

  • 点击button按钮执行相关函数。设置定时器,在规定的时间内连续点击均无效,定时器过后,可以再次点击。
  • 规定时间内可点击一次(第一次点击有效)。


案例-防抖

Vue项目中使用自定义指令实现(按钮)防抖功能。

应用场景:搜索框输入搜索条件,待输入停止后再开始搜索。

/*
*  防抖,规定时间内最后一次点击有效。
*  @param {?Number|300} time - 间隔时间,毫秒
*  @param {Function} fn - 执行函数
*  @param {?String|"click"} event - 事件类型 例:"click"
*  @param {Array} binding.value - [fn,event,time]
*  例:<el-button v-debounce="[resetData,`click`,300]">刷新</el-button>
*  也可简写成:<el-button v-debounce="[resetData]">刷新</el-button>
*/
// 注册一个全局自定义指令 `v-debounce`
Vue.directive('debounce', {// 当被绑定的元素插入到 DOM 中时……inserted: function (el, binding) {//binding.value,使用自定义指令v-debounce时填写的参数//解构赋值,定义了3个变量,将参数(数组)按顺序进行赋值let [fn, event = "click", time = 300] = binding.valuelet timerel.addEventListener(event, () => {//默认监听的事件为click//判断计时器是否存在,存在则清除计时器。重新创建计时器,到时间后执行函数fnif(timer){clearTimeout(timer)}timer = setTimeout(() => fn(), time)})}
})


案例-节流

Vue项目中使用自定义指令实现(按钮)节流功能。

应用场景:click事件,禁止重复提交数据的场景。

/*
*  节流,规定时间内可点击一次(第一次点击有效)。
*  @param {?Number|300} time - 间隔时间,毫秒
*  @param {Function} fn - 执行函数
*  @param {?String|"click"} event - 事件类型 例:"click"
*  @param {Array} binding.value - [fn,event,time]
*  例:<el-button v-throttle="[resetData,`click`,300]">刷新</el-button>
*  传递参数则:<el-button v-throttle="[()=>resetData(param),`click`,300]">刷新</el-button>
*/
// 注册一个全局自定义指令 `v-throttle`
Vue.directive('throttle', {// 当被绑定的元素插入到 DOM 中时……inserted: function(el, binding) {//binding.value,使用自定义指令v-throttle时填写的参数//解构赋值,定义了3个变量,将参数(数组)按顺序进行赋值let [fn, event = "click", time = 300] = binding.valuelet timer = null;el.addEventListener(event, () => {//默认监听的事件为click//判断计时器是否存在,不存在则执行函数fn,创建计时器if (timer == null) {fn();timer = setTimeout(() => timer = null, time)}})}
})//方案二
/*** 按钮节流* 3秒内只有第一次点击有效,防止重复提交数据。*/
//注册一个全局自定义指令 `v-throttle-disabled`
Vue.directive('throttle-disabled', {// 当被绑定的元素插入到 DOM 中时……inserted(el, binding) {let [event = "click", time = 2 * 1000] = binding.valueel.addEventListener(event, () => {//默认监听click事件//当 dom元素el 非禁用状态时 将其设置为禁用状态,同时设置计时器,规定时间后(默认2秒)启用。if (!el.disabled) {el.disabled = truesetTimeout(() => {el.disabled = false}, time)}})}
})


组件中使用

在.vue文件中,data、methods同级的位置,添加如下配置:

,
directives: {debounce: {//自定义指令名,v-debounce// 指令的定义inserted: function(el, binding) {//binding.value,使用自定义指令v-throttle时填写的参数//解构赋值,定义了3个变量,将参数(数组)按顺序进行赋值let [fn, event = "click", time = 300] = binding.valuelet timer = null;el.addEventListener(event, () => {//默认监听的事件为click//判断计时器是否存在,不存在则执行函数fn,创建计时器if (timer == null) {fn();timer = setTimeout(() => timer = null, time)}})}}
},


全局引入

新建js文件

在项目中新建 myDirective.js 文件。通过export default暴露出来。

/** @Author: qsdbl* @Date: 2022-02-10* @Description: 添加全局自定义指令。* 防抖,v-debounce。节流,v-throttle、v-throttle-disabled(可能无效)。* 示例:<el-button v-throttle="[resetData]">刷新</el-button>,使用默认配置,监听click事件,300毫秒内只会执行一次函数resetData* 传递参数:<el-button v-throttle="[()=>resetData(param)]">刷新</el-button>*/
export default {install(Vue, Options) {/**  防抖,规定时间内(默认300毫秒)最后一次点击有效。*  @param {?Number|300} time - 间隔时间,毫秒*  @param {Function} fn - 执行函数*  @param {?String|"click"} event - 事件类型 例:"click"*  @param {Array} binding.value - [fn,event,time]*  例:<el-button v-debounce="[resetData,`click`,300]">刷新</el-button>*  也可简写成:<el-button v-debounce="[resetData]">刷新</el-button>*/// 注册一个全局自定义指令 `v-debounce`Vue.directive('debounce', {// 当被绑定的元素插入到 DOM 中时……inserted: function(el, binding) {//binding.value,使用自定义指令v-debounce时填写的参数//解构赋值,定义了3个变量,将参数(数组)按顺序进行赋值let [fn, event = "click", time = 300] = binding.valuelet timerel.addEventListener(event, () => {//默认监听的事件为click//判断计时器是否存在,存在则清除计时器。重新创建计时器,到时间后执行函数fnif (timer) {clearTimeout(timer)}timer = setTimeout(() => fn(), time)})}})/**  节流,规定时间内可点击一次(第一次点击有效)。*  @param {?Number|300} time - 间隔时间,毫秒*  @param {Function} fn - 执行函数*  @param {?String|"click"} event - 事件类型 例:"click"*  @param {Array} binding.value - [fn,event,time]*  例:<el-button v-throttle="[resetData,`click`,300]">刷新</el-button>*  传递参数则:<el-button v-throttle="[()=>resetData(param),`click`,300]">刷新</el-button>*/// 注册一个全局自定义指令 `v-throttle`Vue.directive('throttle', {// 当被绑定的元素插入到 DOM 中时……inserted: function(el, binding) {//binding.value,使用自定义指令v-throttle时填写的参数//解构赋值,定义了3个变量,将参数(数组)按顺序进行赋值let [fn, event = "click", time = 300] = binding.valuelet timer = null;el.addEventListener(event, () => {//默认监听的事件为click//判断计时器是否存在,不存在则执行函数fn,创建计时器if (timer == null) {fn();timer = setTimeout(() => timer = null, time)}})}})/**  节流方案二,通过禁用html标签,规定时间内可点击一次(第一次点击有效)。*  应用在封装的组件中可能无效。*  @param {?String|"click"} event - 事件类型 例:"click"*  @param {?Number|2000} time - 间隔时间,毫秒*  @param {Array} binding.value - [event,time]*  例:<button v-throttle-disabled="[]">测试按钮</button>*///注册一个全局自定义指令 `v-throttle-disabled`Vue.directive('throttle-disabled', {// 当被绑定的元素插入到 DOM 中时……inserted(el, binding) {let [event = "click", time = 2 * 1000] = binding.valueel.addEventListener(event, () => {//默认监听click事件//当 dom元素el 非禁用状态时 将其设置为禁用状态,同时设置计时器,规定时间后(默认2秒)启用。if (!el.disabled) {el.disabled = truesetTimeout(() => {el.disabled = false}, time)}})}})}
}

配置main.js文件

在入口文件main.js引入

//引入自定义指令,方便全局使用
import myDirective from '@/static/js/myDirective.js';
Vue.use(myDirective);

使用

这样就可以全局使用myDirective.js里面的自定义指令了,示例:

<button v-debounce="[debounceTest,`click`,3000]">测试按钮-3</button>
<button v-debounce="[()=>debounceTest('hi')]">测试按钮</button>


笔记学习自:51CTO-JackieDYH、vue 全局、局部引入

http://www.yayakq.cn/news/755497/

相关文章:

  • 网站宣传的方法有哪些wordpress 多用户插件
  • 手机上怎么自己做网站flash同视频做网站
  • 网站流量提升南平建设集团网站
  • 商城网站开发视频教程网站排名怎么做
  • 如何搭建网站教程视频重庆做网站公司哪家比较好
  • 大型网站建设平台电子商务师证报考官网
  • 嘉兴网站推广优化费用开发公司工程部
  • 合肥网站制作公司有哪些公司模板网站建设平台
  • 如何申请域名邮箱北京优化词网站
  • 北京网站托管公司深圳十大集团公司排名
  • 长春网站建设营销q479185700刷屏网站开发会计处理
  • 装修平台网站排名前十名有哪些本钢建设公司官网
  • 带孩子做网站html5个人主页制作代码
  • 广州网站建设设计厂家网站建设鼠标移动变颜色
  • 做网站需要每年都缴费吗制作网站软件排行榜
  • 如何网站建设全包新手学网站建设视频教程共30课高清版
  • 每一个网站都要后台吗山东淄博网络科技有限公司
  • php网站连接数据库百度账户推广登陆
  • net开发网站易店无忧官网
  • 免费图表制作网站郫县网站建设
  • 艺术网站定制医院网站方案
  • 商业网站教程静海集团网站建设
  • 珠海建设网站首页宁波网站开发公司怎么样
  • 手机网站标准杭州建设网双标化工地2022年
  • 网站平台开通微信支付国内广告设计
  • o2o网站建设怎么样西宁手机微网站
  • 深圳网站建设自己人seo规范培训
  • 关于企业官方网站建设的ppt合肥专业建设网站
  • 廊坊网站建设招聘网站正在建设中的图片大全
  • 网站上传完成后要怎么做wordpress翻页显示404