Vue.js 中,修饰符 (modifier) 是以半角句号 . 指明的特殊后缀,用于指出一个指令应该以特殊方式绑定。例如:v-model.lazy="msg"。
Vue.js 为 v-model 指令提供了三个修饰符,用于对双向绑定的值进行便捷处理,如:去除值首尾的空白、将字符串转换成数字等。
在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。你可以添加 lazy 修饰符,从而转为在 change 事件之后进行同步,例如:
<!-- 在 “change” 时而非 “input” 时更新 --> <input v-model.lazy="msg">
如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符,例如:
<input v-model.number="age" type="number">
这通常很有用,因为即使在 type="number" 时,HTML 输入元素的值也总会返回字符串。如果这个值无法被 parseFloat() 解析,则会返回原始的值。
如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符,例如:
<input v-model.trim="msg">
示例演示 v-model 的三个修饰符用法,如下:
<html> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vue</title> <!-- 使用 CDN 引入 Vue 库 --> <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script> </head> <body> <div id="app"> <p> <input type="text" v-model.lazy="value1" placeholder=".lazy 修饰符"> </p> <p> <input type="text" v-model.number="value2" placeholder=".number 修饰符"> </p> <p> <input type="text" v-model.trim="value3" placeholder=".trim 修饰符"> </p> </div> <script type="text/javascript"> var app = new Vue({ el: "#app", data: { value1: undefined, value2: undefined, value3: undefined } }); </script> </body> </html>
运行效果图: