• vue之表单输入绑定


    目录

    基础用法

     v-model 本质 理解

    选择的基础使用

     修饰符的使用

    .lazy

     .number

    .trim


    基础用法

    你可以用 v-model 指令在表单 <input><textarea> 及 <select> 元素上创建双向数据绑定。

    它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖。它负责监听用户的输入事件来更新数据,并在某种极端场景下进行一些特殊处理。

    注意点:

    v-model 会忽略所有表单元素的 valuecheckedselected attribute 的初始值。它将始终将当前活动实例的数据作为数据来源。你应该通过 JavaScript 在组件的 data 选项中声明初始值。

    简单使用

    1. <script>
    2. export default{
    3. data(){
    4. return{
    5. msg: "hello World"
    6. }
    7. }
    8. }
    9. </script>
    10. <template>
    11. <div>
    12. <!-- v-model 基本使用 -->
    13. <input type="text" v-model="msg">
    14. <h1>{{msg}}</h1>
    15. </div>
    16. </template>
    17. <style>
    18. </style>

     v-model 本质 理解

    对于v-model 我们可以理解为俩个操作组成

    1.v-bind 绑定一个value属性

    2.v-on给当前元素添加一个input事件

    代码:

    1. <script>
    2. export default{
    3. data(){
    4. return{
    5. msg: "hello World"
    6. }
    7. },
    8. methods:{
    9. change(event){
    10. console.log("获取事件")
    11. console.log(event)
    12. //获取事件中target的value 就是输入框改变的值 进行赋值
    13. this.msg=event.target.value
    14. }
    15. }
    16. }
    17. </script>
    18. <template>
    19. <div>
    20. <!-- v-model 基本使用 -->
    21. <input type="text" v-model="msg">
    22. <h1>{{msg}}</h1>
    23. <!-- 本质 -->
    24. <input type="text" :value="msg" @input="change($event)">
    25. </div>
    26. </template>
    27. <style>
    28. </style>

     

     

    选择的基础使用

    注意:

    有时我们可能想把值绑定到当前活动实例的一个动态 property 上,这时可以用 v-bind 实现,此外,使用 v-bind 可以将输入值绑定到非字符串

    代码:

    1. <script>
    2. export default{
    3. data(){
    4. return{
    5. msg: "",
    6. like:[],
    7. sex:"",
    8. city:"",
    9. cities:[],
    10. value:"南昌"
    11. }
    12. }
    13. }
    14. </script>
    15. <template>
    16. <!-- 复选框 -->
    17. <!-- 单个勾选 v-model为布尔值 --> -->
    18. <input type="checkbox" v-model="msg"/>
    19. <h3>{{msg}}</h3>
    20. <br/>
    21. <!-- 勾选多个选项 数组形式 value进行数值绑定-->
    22. <input type="checkbox" v-model="like" value="吃饭"/>吃饭
    23. <input type="checkbox" v-model="like" value="睡觉"/>睡觉
    24. <input type="checkbox" v-model="like" value="玩游戏"/>玩游戏
    25. <h4>{{like}}</h4>
    26. <br/>
    27. <!-- 单选框 value 进行数值绑定 不需要name-->
    28. <input type="radio" v-model="sex" value="男"/>
    29. <input type="radio" v-model="sex" value="女" />
    30. <h3>{{sex}}</h3>
    31. <br/>
    32. <!-- 选择框 都是通过value 进行数值绑定-->
    33. <!-- 单选 -->
    34. <select name="" id="" v-model="city">
    35. <option value="南昌">南昌</option>
    36. <option value="长沙">长沙</option>
    37. <option value="萍乡">萍乡</option>
    38. <option value="武汉">武汉</option>
    39. </select>
    40. <h2>{{city}}</h2>
    41. <br>
    42. <!-- 单选 -->
    43. <!--有时我们可能想把值绑定到当前活动实例的一个动态 property 上,这时可以用 v-bind 实现,此外,使用 v-bind 可以将输入值绑定到非字符串 -->
    44. <select name="" id="" v-model="cities" multiple>
    45. <option :value="value">南昌</option>
    46. <option value="长沙">长沙</option>
    47. <option value="萍乡">萍乡</option>
    48. <option value="武汉">武汉</option>
    49. </select>
    50. <h2>{{cities}}</h2>
    51. </template>
    52. <style>
    53. </style>

     

     修饰符的使用

    .lazy

    在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组织文字时)。你可以添加 lazy 修饰符,从而转为在 change 事件之后进行同步

    代码:

    1. <script>
    2. export default{
    3. data(){
    4. return{
    5. msg: "hello world"
    6. }
    7. }
    8. }
    9. </script>
    10. <template>
    11. <input type="text" v-model="msg"/>
    12. <h3>{{msg}}</h3>
    13. </template>
    14. <style>
    15. </style>

     

    使用.lazy

    1. <!-- 修饰符使用 -->
    2. <!-- .lazy 当输入框失去焦点,再去同步输入框中的数据 -->
    3. <input type="text" v-model.lazy="msg"/>
    4. <h3>{{msg}}</h3>

     

     

     .number

    自动将用户的输入值转为数值类型

    代码:

    1. <script>
    2. export default{
    3. data(){
    4. return{
    5. msg: 0
    6. }
    7. }
    8. }
    9. </script>
    10. <template>
    11. <!-- 修饰符使用 -->
    12. <!-- .number 将输入的内容自动转为数字 -->
    13. <input type="text" v-model.number="msg"/>
    14. <h3>{{typeof msg}}</h3>
    15. </template>
    16. <style>
    17. </style>

     

     

    .trim

    自动过滤用户输入的首尾空白字符

    代码:

    1. <script>
    2. export default{
    3. data(){
    4. return{
    5. msg: "hello world"
    6. }
    7. },
    8. methods:{
    9. downMsg(){
    10. console.log(this.msg)
    11. }
    12. }
    13. }
    14. </script>
    15. <template>
    16. <input type="text" v-model="msg" @keydown="downMsg"/>
    17. <h2>{{msg}}</h2>
    18. </template>
    19. <style>
    20. </style>

     使用.trim

    1. <!-- 修饰符使用 -->
    2. <!-- .trim 自动过滤用户输入的首尾空白字符 -->
    3. <input type="text" v-model.trim="msg" @keydown="downMsg"/>
    4. <h2>{{msg}}</h2>

     

     

  • 相关阅读:
    静态代理模式和lambda表达式
    redis进阶:redis主从架构原理及搭建
    【探索Linux】—— 强大的命令行工具 P.8(进程优先级、环境变量)
    浅析synchronized锁升级的原理与实现
    深度强化学习DRL现存问题和训练指南(D3QN(Dueling Double DQN))
    2023上海国际电力电工展盛大举行 规模创新高 与行业「升级、转型、融合」
    世界前沿技术发展报告2023《世界航空技术发展报告》(四)无人机技术
    40个高质量计算机毕设项目分享【源码+论文】(三)
    12、FPGA程序的固化和下载
    2021年下半年软件设计师上午真题答案及解析(五)
  • 原文地址:https://blog.csdn.net/Little___Turtle/article/details/125564512