VUE中的v-model(对比单向数据绑定和双向数据绑定)

v-model

  • v-model指令用来在input、select、text、checkbox、radio等表单控件元素上创建双向数据绑定的。根据控件类型v-model自动选取正确的方法更新元素 。它负责监听用户的输入事件以更新数据。
    <div id="app">
        账号:<input type="text" name="userid1" id="userid1" :value="userid1">
        账号:<input type="text" name="userid2" id="userid2" v-model="userid2">
        <!-- 验证单向数据绑定 -->
        <button @click='fn' type="button">test</button>
        <!-- 验证双向数据绑定 -->
        <button @click='change' type="button">change</button>
    </div>
    <script type="text/javascript">
        new Vue({
            el:"#app",
            data:{
                userid:"我是userid1",
                userid2:"我是userid2",
            },
            methods:{
                fn(){
                    console.log(this.userid1,this.userid2)
                },
        		change(){
                    this.userid="我是改过的userid"
                }
            }
        })
    </script>
  • 在该例子中,可以看出没有加v-model的input标签,当用户在前端改变userid时,前端界面的userid改变了,但是JS里的数据不会改变。加有v-model的的input标签,当我们改变界面的userid时,JS里的数据也会随之改变,实现双向绑定。若不加v-model,却想改变JS里的数据,可以在JS里实现改变,但是不灵活。
利用v-model模仿百度搜索瀑布流的demo
<div id="app">
	<input type="search" name='search1' id="search1" v-model="search" @input='searchone'>
	<div v-for="obj in arr">{{obj}}</div>
</div>
    
<script>
	var vm = new Vue({
            el: "#app",
            data: {
                search:'',
                arr: []
            },
            methods: {
                searchone(){
                    var url = `http://suggestion.baidu.com/su?wd=${this.search}&cb=?`
                    $.getJSON(url,(data)=>{
                        this.arr = data.s;
                    })
                }
            }
        })
</script>
  • vue的methods中的this与vm指向完全一致。若判定console.log(vm===this),打印结果为true。

v-model表单补充

select下拉表单
  • 单选时:绑定到一个字符串。
  • ①注意:这里v-model是绑定在select标签上。
  • ②当option没有设置value属性时,JS数据中的selected的值为option标签的值。
  • ③当option里面设置value值时,JS数据中的selected的值为option标签中value属性的值。
  • 例子如下:
<div id="app">
  <select v-model="selected">
    	<option disabled value="">请选择</option>
    	<option value="AA">A</option>
    	<option>B</option>
    	<option>C</option>
  </select>
  <span>Selected: {{ selected }}</span>
</div>
<script>
    new Vue({
      el: '#app',
      data: {
        selected: ''
      }
    })
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值