该修饰符的作用是防止暴露标签自定义属性,美化HTML结构。
示例:
打开chrome Elements的properties属性面板查看该元素属性可以看到
没有添加prop的属性是直接暴露在外的。
2.v-bind.sync父子通信最传统的方式是使用$emit在子组件中创建自定义事件,后在父组件中监听该事件:
//父元素<Sinput :myValue="myValue" @tt="tt"/>import Sinput from '_c/SInput'export default { name: 'attr', data () { return { myValue: 'aa' } }, methods: { tt (val) { this.myValue = val } }, components: { Sinput }}//子元素 <input @input="handleInput" :value="myValue" >export default { name: 'SInput', props: ['myValue'], methods: { handleInput (event) { const value = event.target.value this.$emit('tt', value) } }}.sync修饰符其实就是个语法糖,相当于:
//父元素<div myValue.sync='myValue'></div>等同于//父元素 <Sinput :myValue="myValue" @update:myValue="(val)=> this.myValue=val" />//子元素<template> <input @input="handleInput" :value="myValue" ></template><script>export default { name: 'SInput', props: ['myValue'], methods: { handleInput (event) { const value = event.target.value this.$emit('update:myValue', value) } }}</script> 3.v-model修饰符 1.v-model.lazy改变v-model的语法糖,原本监听input事件:
<input v-model="value"/>//等同于<input :value="value" @input="value=$event.target.value"/>使用.lazy修饰符后监听change事件:
<input v-model.lazy="value"/>//等同于<input :value="value" @change="value=$event.target.value"/> 2.v-model.trim用来过滤输入的前后空格
3.v-model.number将字符串转化为数字,并且在失去焦点时将非数字删除
注意: 在输入框开头输入非数字是无法将字符串转化为数字的,依旧会默认输出,所以不要将其当成input的Number类型运用,如下:
<input v-model.number="inputValue" type="text" @change="inputHandel"/>