v-model的修饰符,lazy和number,vue1.x中的debounce已被移除

为什么突然想起来写这个问题呢,因为这两天接了一个优化任务,以前的老代码了,看到了debounce参数,在vue2.x中这个参数被移除了。简单的说一下v-model从1.x升级到2以后的变化,免得大家搞错了写法而一头雾水。
vue1.x版本中,v-model有number,lazy,debounce三个参数,升级到2.x版本后,number和lazy以修饰符的形式使用,这样看起来更加的清晰明了。debounce被设计用来控制 Ajax 请求及其它高耗任务的频率,但随着应用的增长,有一定的局限性。例如在设计一个搜索提示时就有局限性,本身需要控制的只是搜索的延迟,但debounce控制的却是数据从视图层到数据层的延迟。废话不多说,看下面例子。


lazy和number从参数变成修饰符,写法变化如下:

以前的
<input v-model="name" lazy>
<input v-model="age" type="number" number>

现在的
<input v-model.lazy="name">
<input v-model.number="age" type="number">

下面介绍一下这些修饰符。
1)v-model.lazy ,将 视图层数据 与 数据层数据 的 同步 转变为在change事件中发生。

<template>
    <div class="demoLazy">
        <input type="text" v-model.lazy="msg">
        <br>
        <span>{{msg}}</span>
    </div>
</template>

<script>
export default {
    data(){
        return{
            msg:"我是番茄"
        }
    }
}
</script>

效果:
加了lazy修饰符,在输入框失焦或者按了enter,数据才改变
加了lazy修饰符
不加lazy修饰符,输入数据即改变
在这里插入图片描述
2)v-model.number 将输入的字符串转换成number

<template>
    <div class="demoLazy">
        <input type="text" v-model.number="num1">
        <span>+</span>
        <input type="text" v-model.number="num2">
        <span>={{sum}}</span>
    </div>
</template>

<script>
export default {
    data(){
        return{
            num1:0,
            num2:0
        }
    },
    computed:{
        sum(){
            return this.num1 + this.num2
        }
    }
}
</script>

有number修饰符时,虽然我把input给了type为text,数据层的值依然被转换为了number。如图所示:
在这里插入图片描述
无number修饰符时,两个数字为字符串,将会是字符串拼接,如图所示:
在这里插入图片描述
两个修饰符就写了这么长,这篇文章就先结个尾,debounce移除了,在vue2.x中我们想用延迟操作怎么做比较合适呢?娃哈哈,我还是再写一篇吧。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值