Vue学习之路--数据绑定-操作指令-点击事件--键盘事件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>Vue指令学习</title>
		<style>
			.red{
				color: red;
			}
			.size{
				    font-size: larger;
			}
			[v-cloak] {
				display: none;
			}
		</style>
	</head>

	<body>
		<div id="app">
			<!-- 各种数据操作指令 -->
			<div>
				<!-- v-cloak:防止闪动、页面先显示{{msg}}、然后再出现结果的情况 -->

				<!-- 填充纯文本 -->
				<div v-cloak v-text="msg"></div>
				<!-- 填充富文本 -->
				<div v-html="msg_html"></div>

				<!-- 是否显示当前单元 -->
				<div v-show="is_show">当前是否显示</div>

				<!-- if else if  else -->
				<div v-if="age>60">老年人</div>
				<div v-else-if="age<60 && age>30">中年人</div>
				<div v-else-if="age<30 && age>18">年轻人</div>
				<div v-else>小屁孩</div>

				<!-- 单数组for循环 -->
				<div>
					<ul>
						<li v-for="item in str_arr">
							{{item}}
						</li>
					</ul>
					<ul>
						<!-- index:代表序列号 -->
						<li v-for="(item,index) in str_arr">
							{{index+"----"+item}}
						</li>
					</ul>
				</div>

				<!-- 对象数组for循环 -->
				<div>
					<ul>
						<!-- v-for 的默认行为会尝试原地修改元素而不是移动它们。要强制其重新排序元素,你需要用特殊 -->
						<!-- key 来提供一个排序提示: -->
						<li :key="item.ID" v-for="(item,index) in json_arr">
							当前序号:{{index}}
							ID:{{item.ID}}
							姓名:{{item.name}}
							年龄:{{item.age}}
						</li>
					</ul>
				</div>
			</div>

			<!-- v-on 事件 -->
			<div>
				<button v-on:click="Onclick">点击事件</button>
				<button @click="Onclick">点击事件(简写)</button>
				<button data-type="button1" data-name="BUT" @click="OnclickMsg('hello',$event)">点击事件(传参数)</button>
				<!-- 键盘事件 -->
				<!-- 如果想实现自定义键盘事件,请先获取相应的键盘对应的code值.再将该code值赋到自定义方法里面 -->
				<input type="text" v-on:keyup='keyupCode' value="获取按键修饰符" />

				<input type="text" v-on:keyup.空格='keyup_kong' value="调用空格事件" />

				<input type="text" v-on:input='keyup_input' value="文本框输入事件" />

				<input type="text" v-on:blur='keyup_blur' value="失去焦点事件" />

				<!-- 阻止冒泡事件
				v-on:click.stop="handle"
				.prevent阻止默认行为
				v-on:click.prevent="handle" -->

				<div @click="Onclick">
					<button data-type="button1" data-name="BUT" @click.stop="OnclickMsg('hello',$event)">阻止冒泡</button>
				</div>

				<!-- a标签绑定url -->
				<a v-bind:href='url'>跳百度</a>
				<a :href='url'>跳百度2</a>

				<!-- prevent:组止默认行为 -->
				<a v-on:click.prevent="Onclick" href="http://www.baidu.com">被阻止默认行为的A</a>
				<form>

					<div @click="Onclick">
						<!-- 这种写法会调用:Onclick和OnclickMsg方法。而且也会执行sumbit的默认事件 -->
						<!-- <button type="submit" data-type = "button1" data-name = "BUT" v-on:click="OnclickMsg('hello',$event)">按钮</button>	 -->
						<!-- 只执行OnclickMsg方法.并不会执行sumbit的默认事件 -->
						<button type="submit" data-type="button1" data-name="BUT" v-on:click.stop.prevent="OnclickMsg('hello',$event)">按钮</button>
					</div>

				</form>

				<!-- once:点击回调只会触发一次 -->
				<button type="button" data-type="button1" data-name="BUT" v-on:click.once="Onclick">只能点击一次的按钮</button>

			</div>

			<!-- v-bind 事件(对象属性操作) -->
			<div>
				<img v-bind:src="bind_obj.imageSrc">
				<!-- 缩写 -->
				<img :src="bind_obj.imageSrc">

				<!-- 针对class操作 -->
				<!-- <div :class="{bind_obj.redClass.name : bind_obj.redClass.is}"> -->
				<div :class="{red:bind_obj.isred}">
					<span>{{msg}}</span>
				</div>
				
				<div :class="[bind_obj.red_class,bind_obj.size_class]">
					<span>{{msg}}</span>
				</div>
			</div>

			

		</div>
	</body>

	<script type="text/javascript" src="js/vue.js"></script>
	<script type="text/javascript">
		/* 自定义在输入框里面按空格的事件 */
		Vue.config.keyCodes.空格 = 32;


		var vm = new Vue({
			el: "#app",
			data: {
				msg: "我是msg内容",
				msg_html: "<h1>我是标题</h1>",
				is_show: true,
				age: 27,
				str_arr: ["1", "2", "3"],
				json_arr: [{
					ID: 1,
					name: '王1',
					age: 18
				}, {
					ID: 2,
					name: '王2',
					age: 17
				}, {
					ID: 3,
					name: '王3',
					age: 19
				}],
				url: 'http://www.baidu.com',
				bind_obj: {
					imageSrc: '~/../image/logo.jpg',
					isred:true,
					red_class:'red',
					size_class:'size'
				},
				input_obj:{
					input_str:'',
					textarea_str:'',
					checkedNames:[],
					for_checked:[]
				}
			},
			methods: {
				/*
				Vue方法:
				*/
				Onclick: function() {
					alert("当前按钮被点击了")
				},
				OnclickMsg: function(msg, event) {
					/* 显示当前对象的文本信息 */
					console.log(event.target.innerHTML)
					/* 显示当前对象的自定义属性 */
					console.log(event.target.dataset.type)
					console.log(event.target.dataset.name)
					alert(msg)
				},
				keyupCode: function(event) {
					/* 显示keyCode就是对应的键盘code */
					console.log(event.keyCode)
				},
				keyup_kong: function() {
					console.log('在输入框按下空格的事件')
				},
				keyup_input: function(event) {
					//获取当前输入框当前输入的值
					console.log(event.target.value)
				},
				keyup_blur: function() {
					console.log('当前文本框失去焦点')
				}

			}
		})
	</script>
</html>

  

posted @ 2021-06-29 08:07  王彬-效率开发  阅读(189)  评论(0编辑  收藏  举报