7.Vue指令:v-model

v-model特点

  • 是vue.js中唯一一个能实现数据双向绑定的指令。
  • 限制运用在input(radio,text,checkbox..)、select、textarea元素中。
  • 会忽略所有表单元素的 value、checked、selected 特性的初始值而总是将 Vue 实例的数据作为数据来源,应通过 JavaScript 在组件的 data 选项中声明初始值。

v-bind单向绑定

<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="js/vue.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>
		<div class="outer">	
			<input type="text" v-bind:value="useName1"/>
			<p id="userName1">您输入的用户名为:{{useName1}}</p>
		</div>
	</body>
	<script>
		var vm = new Vue({
			el:".outer",
			data:{
				useName1:"空空如也"
			}
		});
	</script>
</html>

向input里面输入数据,会发现model中数据并没有改变,而引用了model中数据的p标签中插值自然也没改变。所以,v-bind只实现了m->v,而v->m无法实现。

v-model双向绑定

 将上面代码替换为v-model:

<!-- v-model后面不需要跟:value之类的,这点不同于v-bind -->
<input type="text" v-model="useName2"/> 
<p id="userName2">您输入的用户名为:{{useName2}}</p>

则在input输入数据的同时,p标签插值也在改变。

 

案例:简单计算器

思路

一个简单的计算器可以由以下组件构成:

  • 输入框input1--输入被操作数
  • 符号框select--选择操作符
  • 输入框input2--输入被操作数
  • “=”号按钮--绑定计算函数
  • 输入框input3--输出计算结果

以上输入输出操作在使用v-model后会非常便捷,代码清晰,无需操作dom。

实现

//html
<div id="content">
    <input type="text" id="num1" v-model="num1" />
    <select id="symbol" v-model="symbol">
        <option value="+">+</option>
        <option value="-">-</option>
        <option value="*">*</option>
        <option value="/">/</option>
    </select>
    <input type="text" id="num2" v-model="num2" />
   <button v-on:click="calc">=</button>
   <input type="text" id="result" v-model="result" />
</div>

//vue
var vm = new Vue({
    el: "#content",
    data: {
        num1: 0,
        symbol: "+",
        num2: 0,
        result: 0
    },
    methods: {
        calc: function() {
    	switch (this.symbol) {
    		case "+":
    			this.result = parseFloat(this.num1) + parseFloat(this.num2);
    			break;
    		case "-":
    			this.result = parseFloat(this.num1) - parseFloat(this.num2);
    			break;
    		case "*":
    			this.result = parseFloat(this.num1) * parseFloat(this.num2);
    			break;
    		case "/":
    			this.result = parseFloat(this.num1) / parseFloat(this.num2);
    			break;
    	}
        }
    }
});

最终效果:

 

相关资料

VueJs(4)---V-model指令

Vue 进阶教程之:详解 v-model

v-model获取值与.value取值的区别(v-model原理分析)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值