Vue.js 双向绑定

v-model 双向绑定

前面的例子,都是把 Vue对象上的数据显示在视图上,那么如何把视图上的数据放到Vue对象上去呢?
这时就需要用到v-model进行双向绑定
像这样,当input里面的值发生变化的时候,就会自动把变化后的值,绑定到Vue对象上去了
 
 <input v-model="name" >

如:

<script src="https://how2j.cn/study/vue.min.js"></script>
  
<div id="div1">
	
	hero name: <input v-model="name" >
	<button @click="doClick" >提交数据</button>
	
</div>
   
<script>
 
new Vue({
      el: '#div1',
      data:{
		name:"teemo"
      },
      methods:{
    	  doClick:function(){
    		  alert(this.name);
    	  }
      }
    })
   
</script>

多种数据风格的数据绑定

<script src="https://how2j.cn/study/vue.min.js"></script>
   
<style>
table tr td{
    border:1px solid gray;
    padding:10px;
    
}
table{
    border-collapse:collapse;
    width:800px;
    table-layout:fixed;
}
tr.firstLine{
    background-color: lightGray;
}
</style>
 
<div id="div1">
   
    <table align="center" >
        <tr class="firstLine">
            <td>视图类型</td>
            <td>输入数据</td>
            <td>绑定到Vue上的数值</td>
        </tr>        
        <tr>
        	<td>
        		单行文本
        	</td>
        	<td>
				<input v-model="input" placeholder="输入数据">
        	</td>
        	<td>
	        	<p>{{ input }}</p>    
        	</td>
        </tr>
        <tr>
        	<td>
        		多行文本
        	</td>
        	<td>
        		<textarea v-model="textarea1" placeholder="输入数据"></textarea>
        	</td>
        	<td>
	        	<p>{{ textarea1 }}</p>    
        	</td>
        </tr>
        <tr>
        	<td>
        		单个复选框
        	</td>
        	<td>
        		<input type="checkbox" id="checkbox" v-model="checked">
        	</td>
        	<td>
	        	<p>{{ checked }}</p>    
        	</td>
        </tr>
        <tr>
        	<td>
        		多个复选框
        	</td>
        	<td>
				  <input type="checkbox" id="teemo" value="teemo" v-model="checkedes">
				  <label for="teemo">teemo</label>
              <!--id = "",for = "",是规范不写也能运行,value是选择的真实值,lable是显示的值-->
				  <input type="checkbox"  value="gareen7" v-model="checkedes">
				  <label>gareen0</label>
				  <input type="checkbox" id="annie" value="annie1" v-model="checkedes">
				  <label for="annie">annie</label>
        	</td>
        	<td>
	        	<p>{{ checkedes }}</p>    
        	</td>
        </tr>
        <tr>
        	<td>
        		单选按钮
        	</td>
        	<td>
			  <input type="radio" id="one" value="One" v-model="radio">
			  <label for="one">One</label>
			  <br>
			  <input type="radio" id="two" value="Two" v-model="radio">
			  <label for="two">Two</label>
        	</td>
        	<td>
	        	<p>{{ radio }}</p>    
        	</td>
        </tr>
        <tr>
        	<td>
        		单选选择框
        	</td>
        	<td>
			  <select v-model="selected" size="5">
			    <option disabled value="">请选择</option>
			    <option>AD</option>
			    <option>AC</option>
			    <option>ADC</option>
			  </select>
        	</td>
        	<td>
	        	<p>{{ selected }}</p>    
        	</td>
        </tr>
        <tr>
        	<td>
        		多选选择框
        	</td>
        	<td>
        	  (通过ctrl或者shift进行多选)<br>
			  <select v-model="selecteds" multiple size="5">
			    <option disabled value="">请选择</option>
			    <option>AD</option>
			    <option>AC</option>
			    <option>ADC</option>
			  </select>
        	</td>
        	<td>
	        	<p>{{ selecteds }}</p>    
        	</td>
        </tr>
        <tr>
        	<td>
        		单个复选框
        	</td>
        	<td>
        	    默认值是true或者false,也可以修改为自定义的值<br>
        		<input type="checkbox" id="toggle" true-value="yes1" false-value="no1" v-model="toggle">
        	</td>
        	<td>
	        	<p>{{ toggle }}</p>    
        	</td>
        </tr>        

    </table>
 
</div>
    
<script>
  
new Vue({
      el: '#div1',
      data: {
          input:'',
          textarea1:'',
          checked:'',
          checkedes:[],
          radio:'',
          selected:'',
          selecteds:[],
          toggle:'',
          
      }
    })
    
</script>

修饰符

.lazy

没加.lazy就是实时更新,加了.lazy后便是鼠标失去焦点时更新

<script src="https://how2j.cn/study/vue.min.js"></script>
   
<style>
table tr td{
    border:1px solid gray;
    padding:10px;
    
}
table{
    border-collapse:collapse;
    width:800px;
    table-layout:fixed;
}
tr.firstLine{
    background-color: lightGray;
}
</style>
 
<div id="div1">
   
    <table align="center" >
        <tr class="firstLine">
            <td>视图类型</td>
            <td>输入数据</td>
            <td>绑定到Vue上的数值</td>
        </tr>        
        <tr>
        	<td>
        		单行文本1
        	</td>
        	<td>
				<input v-model.lazy="input1" placeholder="输入数据">
        	</td>
        	<td>
	        	<p>{{ input1 }}</p>    
        	</td>
        </tr>
        <tr>
        	<td>
        		单行文本2
        	</td>
        	<td>
				<input v-model.lazy="input2" placeholder="输入数据">
        	</td>
        	<td>
	        	<p>{{ input2 }}</p>    
        	</td>
          
         
        </tr>
      <tr>
        <td> 
        	多行文本
        </td>
         <td ><textarea v-model.lazy="textarea" placeholder="输入数据"></textarea>
          <td>
            <p> {{textarea}}</p>
          </td>
      </tr>
       <tr>
        <td> 
        	多行文本实时更新
        </td>
         <td ><textarea v-model="textarea2" placeholder="输入数据"></textarea>
          <td>
            <p> {{textarea2}}</p>
          </td>
      </tr>
    </table>
 
</div>
    
<script>
  
new Vue({
      el: '#div1',
      data: {
          input1:'',
          input2:'',
          textarea:'',
        textarea2:''
          
      }
    })
    
</script>

.number

将String类型转为number数值类型,进行计算

<script src="https://how2j.cn/study/vue.min.js"></script>
    
<style>
table tr td{
    border:1px solid gray;
    padding:10px;
     
}
table{
    border-collapse:collapse;
    width:800px;
    table-layout:fixed;
}
tr.firstLine{
    background-color: lightGray;
}
</style>
  
<div id="div1">
    
    <table align="center" >
        <tr class="firstLine">
            <td>视图类型</td>
            <td>输入数据</td>
            <td>绑定到Vue上的数值</td>
            <td>数值类型</td>
        </tr>       
        <tr>
            <td>
                单行文本1
            </td>
            <td>
                <input v-model="input1" type="number" placeholder="输入数据">
            </td>
            <td>
                <p>{{ input1 }}</p>   
            </td>
            <td>
            	<p>{{ typeof input1 }}</p>   
            </td>
        </tr>
        <tr>
            <td>
                单行文本2
            </td>
            <td>
                <input v-model.number="input2"   type="number"  placeholder="输入数据">
            </td>
			<td>
                <p>{{ input2 }}</p>   
			</td>
            <td>
                <p>{{ typeof input2 }}</p>   
            </td>
        </tr>
    </table>
  
</div>
     
<script>
   
new Vue({
      el: '#div1',
      data: {
          input1:'',
          input2:''
           
      }
    })
     
</script>

.trim

trim 去掉前后的空白

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值