验证码: 看不清楚,换一张 查询 注册会员,免验证
  • {{ basic.site_slogan }}
  • 打开微信扫一扫,
    您还可以在这里找到我们哟

    关注我们

vue的v-model是什么及怎么使用

阅读:801 来源:乙速云 作者:代码code

vue的v-model是什么及怎么使用

      v-model是什么

      v-model 是Vue框架的一种内置的API指令,本质是一种语法糖写法。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。

      为什么使用v-model?

      v-model指令可以在表单 input、textarea以及select元素上创建双向数据绑定它会根据控件类型自动选取正确的方法来更新元素。尽管有些神奇,但 v-model 本质上不过是语法糖,它负责监听用户的输入事件来更新数据,并在某种极端场景下进行一些特殊处理;

      什么场景下会使用v-model?

      表单提交是开发中非常常见的功能,也是和用户交互的重要手段:比如用户在登录、注册时需要提交账号密码;比如用户在检索、创建、更新信息时,需要提交一些数据; 这些都要求我们可以在代码逻辑中获取到用户提交的数据,我们通常会使用v-model指令来完成

      示例:v-model的基本使用

      vue的v-model是什么及怎么使用

      v-model的原理

      官方有说到,v-model的原理其实是背后有两个操作:

      • v-bind绑定value属性的值;

      • v-on绑定input事件监听到函数中,函数会获取最新的值赋值到绑定的属性中;

      vue的v-model是什么及怎么使用

      那v-model是双向绑定吗?

      是的你可以用 v-model 指令在表单     

      article当前的值是:{{ article }}

        
    export default {
      name: 'textarea',
      data () {
        return {
          article: "a"
        }
      }
    }

    v-model绑定checkbox

    我们来看一下v-model绑定checkbox:单个勾选框和多个勾选框

    单选框示例:

    vue的v-model是什么及怎么使用

    export default {
      name: 'checkbox',
      data () {
        return {
          isAgree: "true"
        }
      }
    }

    效果:

    vue的v-model是什么及怎么使用

      
          篮球
          足球
          羽毛球球
          兵乓球
          您的爱好有:{{ sport }}
    export default {
      name: 'demo',
      data () {
        return {
          sport: [],
        }
      }
    }

    v-model绑定radio

    v-model绑定radio,用于选择其中一项;

            
                男
            
            
                女
             您选中的是:{{sex}}
    export default {
      name: 'demo',
      data () {
        return {
         sex: '',
        }
      }
    }

    v-model绑定select

    和checkbox一样,select也分单选和多选两种情况。

    
            香蕉
            苹果
            橙子
            榴莲
          
    export default {
      name: 'demo',
      data () {
      return {
           fruits2: [],
      }
      }
    }
    
            香蕉
            苹果
            橙子
            榴莲
          

    v-model的值绑定

    目前我们在前面的案例中大部分的值都是在template中固定好的:比如gender的两个输入框值male、female;比如hobbies的三个输入框值basketball、football、tennis. 在真实开发中,我们的数据可能是来自服务器的,那么我们就可以先将值请求下来,绑定到data返回的对象中,再通过v-bind来进行值的绑定,这个过程就是值绑定。这里不再给出具体的做法,因为还是v-bind的使用过程。

    v-model修饰符 - lazy

    lazy修饰符是什么作用呢?

    默认情况下,v-model在进行双向绑定时,绑定的是input事件,那么会在每次内容输入后就将最新的值和绑定的属性进行同步;,如果我们在v-model后跟上lazy修饰符,那么会将绑定的事件切换为 change 事件,只有在提交时(比如回车)才会触发

    vue的v-model是什么及怎么使用

          
          
          
          
          
          {{ message }}
    export default {
      name: 'demo',
      data () {
        return {
           message: "内容",
        }
      }
    }

    v-model修饰符 - number

    我们先来看一下v-model绑定后的值是什么类型的:message总是string类型,即使在我们设置type为number也是string类型;

    vue的v-model是什么及怎么使用

    如果我们希望转换为数字类型,那么可以使用 .number修饰符:

    vue的v-model是什么及怎么使用

    另外,在我们进行逻辑判断时,如果是一个string类型,在可以转化的情况下会进行隐式转换的: 下面的score在进行判断的过程中会进行隐式转化的

    vue的v-model是什么及怎么使用

    v-model修饰符 - trim

    如果要自动过滤用户输入的守卫空白字符,可以给v-model添加 trim修饰符

    vue的v-model是什么及怎么使用

    码上掘金代码片段

    全部示例代码:

    
    
    
    
        
        
        
        Document
        
        
    
    
    
    
        
            
             {{message}}
            
                                  男                               女          您选中的是:{{sex}}         
                                  同意                  下一步 您的选择:{{agree}}         
                     篮球         足球         羽毛球球         兵乓球 您的爱好有:{{sport}}         
                                  香蕉             苹果             橙子             榴莲          您选中的水果是{{fruits}}         
            
                                  香蕉             苹果             橙子             榴莲                  
     您选中的水果是{{fruits2}}         
                                  {{item}}                  
     您的爱好是{{hobbies}}         
                                                
     {{message}}         
                                       
     {{age}}--{{typeof age}}         
                                       
     {{name}}     
        
    分享到:
    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: hlamps#outlook.com (#换成@)。
    相关文章
    {{ v.title }}
    {{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
    你可能感兴趣
    推荐阅读 更多>

    {{ basic.bottom_text }}