Vue全家桶实战02_【从入门到放弃系列】

指令

vue中常用v-指令演示

Demo演示

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Vue02</title>

	<style type="text/css">
		.box{
			width: 300px;
			height: 300px;
			background-color: red
		}
		.active{
			background-color: green;
		}
	</style>

</head>
<body>
	<div id="app">
		
	</div>

	<script type="text/javascript" src="node_modules/vue/dist/vue.js"></script>
	<script type="text/javascript">

		//创建实例化对象
		//双大括号插值
		//v-text innerText 
		//v-html innerHTML
		//v-if 
		//数据属性对应的值,如果为假,则不再页面中渲染,反之亦然 appendChild()  removeChild()
		//v-show 控制dom元素的显示隐藏 display:none | block;

		//v-on :原生事件名 = ‘函数名’   简便写法   @



		//控制类名对原素显示隐藏 display:none | block
		//v-bind绑定标签上的属性  (内置的属性和自定义的属性)  简写 :

		//v-for = "(item,index) in menuLists"

		/*

		v-if是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件
		适当地被销毁和重建。
		v-if也是惰性的:如果在初始渲染时条件为假,则什么也不做一直到条件第一 次变为真
		时,才会开始渲染条件块。
		相比之下, V- show
		就简单得多一不管初始条件是什么 ,元素总是会被渲染,并且只是简单地基于CSS
		进行切换。
		-般来说,v-if有更高的切换开销,而v-show
		有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用v-show
		较好;如果在运行时条件很少改变,则使用v-if较好。

		*/

		var vm = new Vue({
			el:"#app",
			data:function(){
				return{
					msg:'指令系统',
					msg2:'<h2>指令系统2</h2>',
					isShow:true,
					isGreen:false,
					text:'乔治大哥',
					menuLists:[
						{id:1,name:'乔治',price:2400},
						{id:2,name:'科比',price:3400},
						{id:3,name:'詹姆斯',price:1400},
					],
					person:{
						name:'george',
						age:23,
						fav:'篮球'
					}
				}
			},
			template:`
				<div class='app'>
					<h2>{{msg}}</h2>
					<p v-text='msg'></p>
					<div v-html='msg2'></div>
					<div v-text='1+1'></div>
					<div v-if='isShow'>科比出场</div>
					<div v-if='!isShow'>曼巴out</div>

					<div v-if="Math.random() > 0.5">
						已显示
					</div>
					<div v-else>
						已隐藏
					</div>
					<div v-show='isShow'>
						显示
					</div>
					<div v-show='!isShow'>
						隐藏
					</div>
					
					<div class='box' v-on:click='clickHandler' v-bind:class='{active:isGreen}' :aaa='text'>
					</div>
					<<img src="" alt="">
					<a href="" title=''></a>

					<ul>
						<li v-for='item in menuLists'>
							<h5 v-text="item.id"></h5>
							<h3>{{item.name}}</h3>
							<em>{{item.price}}</em>
						</li>
					</ul>
					
					<ul>
						<li v-for = "(value,key) in person">
							{{key}} = {{value}}
						</li>
					</ul>
				</div>

				
			`,
			methods:{
				//点击切换颜色
				clickHandler(e){
					console.log(this);
					this.isGreen = !this.isGreen;
				}
			}
		});

		console.log(vm)
	</script>
</body>
</html>

页面展示:


双向绑定

Demo演示

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>vue的双向数据绑定</title>
</head>
<body>

	<!-- v-model双向数据绑定 -->
	<div id="app">
		<!-- <input type="text" :value='msg'> -->
		<input type="text" v-model='msg'>
		<h3>{{msg}}</h3>
	</div>

	<script type="text/javascript" src="node_modules/vue/dist/vue.js"></script>

	<script type="text/javascript">
	new Vue({
		el:"#app",
		data(){
			return{
				msg:"大梦"
			}
		}
	});
	</script>
	
</body>
</html>

结果展示

即:- v-mode1双向数据绑定的体现只会体现在UI控件中   只能应用在有value属性的

 Demo

<!doctype html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>vue的双向数据绑定</title>
</head>
<body>

	<!-- v-model双向数据绑定 -->
	<!-- 语法糖: 甜甜的,它是v-bind:value  和  v-on:input 的体现 -->
	<div id="app">
		<!-- <input type="text" :value='msg'> -->
		<!-- <input type="text" v-model='msg'> -->
		<input type="text" v-bind:value='msg' v-on:input='valueChange'>
		<h3>{{msg}}</h3>
	</div>

	<script type="text/javascript" src="node_modules/vue/dist/vue.js"></script>

	<script type="text/javascript">
	new Vue({
		el:"#app",
		data(){
			return{
				msg:"大梦"
			}
		},
		methods:{
			valueChange(e){
				console.log(e.target.value);
				this.msg=e.target.value;
			}
		}
	});
	</script>
	
</body>
</html>

 其内部的流程为:

发布了791 篇原创文章 · 获赞 677 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/qq_41946557/article/details/104474077