vue学习(二)表单渲染

表单渲染可以分为条件渲染,列表渲染,事件处理,表单输入绑定。

1.条件渲染

v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 true值的时候被渲染。

<body>
		<div id="test">
			<button id="aaa" v-if="msg">显示</button>
			<button id="aaa" v-else="msg">不显示</button>
			
			<button v-if="num > 5">大于5</button>
			<button v-else-if="num == 5">等于5</button>
			<button v-else>小于5</button>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				msg:false,
				num:5
			}
		})
	</script>

v-show指令:

<body>
		<div id="test">
			<button id="aaa" v-show="msg">显示</button>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				msg:true
			}
		})
	</script>

v-show和v-if的区别:

v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

2.列表渲染

我们可以用 v-for 指令基于一个数组来渲染一个列表。v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的数组元素的别名

<body>
		<div id="test">
			<ul id="example-1">
				<li v-for="item in items">
				   {{ item.message }}
				</li>
			</ul>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				items: [
			      { message: 'Foo' },
			      { message: 'Bar' }
			    ]
			}
		})
	</script>

在 v-for 块中,我们可以访问所有父作用域的属性。v-for 还支持一个可选的第二个参数,即当前项的索引。

<body>
		<div id="test">
			<ul id="example-1">
				<li v-for="(item,index) in items">
				   {{ parentMessage }} - {{ index }} - {{ item.message }}
				</li>
			</ul>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				parentMessage: 'Parent',
				items: [
			      { message: 'Foo' },
			      { message: 'Bar' }
			    ]
			}
		})
	</script>

在 v-for 里使用对象

<body>
		<div id="test">
			<ul id="example-1">
				<li v-for="(value,name,index) in object">
				  {{index}}:{{name}} {{ value }}
				</li>
			</ul>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				object: {
			      title: 'How to do lists in Vue',
			      author: 'Jane Doe',
			      publishedAt: '2016-04-10'
			    }
			}
		})
	</script>

3.事件处理

可以用 v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。

<body>
		<div id="test">
			<button v-on:click="counter += 1">Add 1</button>
  			<p>The button above has been clicked {{ counter }} times.</p>
  			<button @click="greet('test')">Greet</button>
		</div> 
	</body>
	
	<script>
		var app = new Vue({
			el: '#test',
			data:{
				counter:0
			},
			methods:{
				greet:function(msg){
					alert(msg)
				}
			}
		})
	</script>

2.1.4新增事件,点击只会触发一次

<a v-on:click.once="doThis"></a>

按键修饰符

<input v-on:keyup.enter="submit">只有当点击enter按钮时,才会触发。

按键码:

  • .enter
  • .tab
  • .delete (捕获“删除”和“退格”键)
  • .esc
  • .space
  • .up
  • .down
  • .left
  • .right
     

需要注意的是keyup事件必须为input

<body>
		<div id="test">
			<button v-on:click="counter += 1">Add 1</button>
  			<p>The button above has been clicked {{ counter }} times.</p>
  			<button @click="greet('test')">Greet</button>
  			
  			<a v-on:click.once="doThis">一次</a>
  			<input v-on:keyup.113="ceshi">按键码</input>
		</div> 
	</body>
	
	<script>
		/*Vue.config.keyCodes.f2 = 113;*/
		var app = new Vue({
			el: '#test',
			data:{
				counter:0
			},
			methods:{
				greet:function(msg){
					alert(msg)
				},
				doThis:function(){
					alert(111)
				},
				ceshi:function(){
					alert("F1")
				}
			}
		})
	</script>

4.表单输入绑定

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

<body>
		<div id="test">  			
  			<input v-model="msg" placeholder="edit me">
			<p>Message is: {{ msg }}</p>
		</div> 
	</body>
	
	<script>
		
		var app = new Vue({
			el: '#test',
			data:{
				counter:0,
				msg:""
			},
		})
	</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值