二、Vue指令

一、文本指令

1. v-text

	不能解析html语法的文本,会原样实处。

2. v-html

	不能解析html语法的文本。

3. v-once

	处理的标签的内容只能被解析一次。

	<p v-on:click="pClick" v-once>{{ msg }}</p>

二、事件指令

1. 语法
		
	v-on:事件名=‘方法变量’
	   
	@事件名=‘方法变量’


2. 同一标签绑定多个事件

	鼠标事件示例

	<body>
	<div id="app">
	    <p @mouseover="f1" @mouseout="f2">{{ action }}</p>
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	
	        data: {
	            action: '鼠标事件'
	        },
	
	        methods:{
	            f1 () {
	                this.action = '悬浮';
	                console.log('aaaaaaaa')
	            },
	            f2 () {
	                this.action = '离开'
	            },
	        }
	    })
	</script>


3. 给绑定事件传参

	a. 不加括号默认传事件对象:$event
	
	b. 加括号表示自己传参,系统不自动传事件对象,可以手动传入事件。

		<p @click="f1($event, 'a')">{{ action }}</p>

三、属性指令

1. 语法
		
	v-bind:属性名=‘变量’
	   
	:属性名=‘变量’



2. class属性绑定方法


	a. 变量的值就是类名
		
		<p :class="c1"></p>
	
	b. 多类名可以用[ ],采用多个变量来控制
	
		<p :class="[c1, c2]"></p>
	
	c. 选择器可设置为常量
	
		<p :class="['d1', c3]"></p>
		
	d. {类名:布尔值}控制某类名是否起作用
	
		<p :class="['d1', {d2: is_true}]"></p
	
	
3. 调整class属性示例
	
	><head>
	    <meta charset="UTF-8">
	    <title>Title</title>
	    <style>
	        .d1 {
	             200px;
	            height: 200px;
	            background-color: orange;
	        }
	        .d2 {
	            border-radius: 50%;
	        }
	        .d3 {
	            border-radius: 20%;
	        }
	    </style>
	</head>
	<body>
	<div id="app">
	
	    <p :class="c1"></p>
	    <p :class="[c1, c2]"></p>
	    <p :class="['d1', c3]"></p>
	    <p :class="['d1', {d2: is_true}]" @click="is_true = !is_true"></p>
	
	</div>
	</body>
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            c1: 'd1',
	            c2: 'd2',
	            c3: 'd3',
	            is_true: 0,
	        }
	    })
	</script>
	
	
4. style属性绑定方式1

	<body>
	<div id="app">
	
	    <p :style="myStyle">样式属性</p>
	
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            myStyle: {
	                 '100px',
	                height: '100px',
	                backgroundColor: 'red'
	            }
	        }
	    })
	</script>
	
	
5. style属性绑定方式2

	<body>
	
	<div id="app">
	
	    <p :style="{ w, height: h, backgroundColor: bgc}">样式属性</p>
	
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            w: '100px',
	            h: '100px',
	            bgc: 'red'
	        }
	    })
	</script>

四、表单指令

1. 语法
		
	v-model=‘变量’


2. 特点

	a. v-model可实现数据的双向绑定,v-model绑定的变量值可以影响表单标签的值,
	反过来单标签的值也可以影响变量的值。
	
	b. 在选择框中,v-model能确定选择的初始值。
	
	
3. v-model关联input框

	<body>
	<div id="app">
	
	    <input type="text" :value="v1"  v-model="v1">
	    <input type="text" :value="v1">
	    {{ v1 }}
	
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            v1: '123'
	        }
	    })
	</script>
	

4. 在单选框中的应用(value)
	
	<body>
	<div id="app">
	    <form action="">
	    男:<input type="radio" name="sex" value="male" v-model="v1">
	    女:<input type="radio" name="sex" value="female" v-model="v1">
	    {{ v1 }}
	    <hr>
	    <input type="submit" >
	</form>
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            v1: 'male',
	        }
	    })
	</script>


5. 在单一复选框中的应用(布尔值)

	<body>
	<div id="app">
	    <form action="">
	        卖身契:同意 <input type="checkbox" name="agree" v-model="v1">
	        <hr>
	        <button type="submit">提交</button>
	    </form>
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            v1: true,
	        }
	    })
	</script>
	

6. 在多复选框中的应用(数组)

	<body>
	<div id="app">
	    <form action="">
	        性别:<br>
	        男:<input type="checkbox"  name="gender" value="male" v-model="v1">
	        女:<input type="checkbox"  name="gender" value="female" v-model="v1">
	        其他:<input type="checkbox"  name="gender" value="other" v-model="v1">
	        {{ v1 }}
	    </form>
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            v1: ['male'],
	        }
	    })
	</script>

五、条件指令

1. 语法
		
	a. v-show=‘布尔变量’
	
	b. v-if=‘布尔变量’ 
	
	
2. 特点

	a. 用v-show隐藏时,采用display:none进行渲染。
	
	b. 用v-if隐藏时,不在页面中渲染。


3. 修改v-if参数调整显示的内容

	<head>
	    <meta charset="UTF-8">
	    <title>Title</title>
	    <style>
	        [v-vloak] {display: none;}
	        .box {
	             200px;
	            height: 200px;
	        }
	        .r{background-color: red}
	        .b{background-color: blue}
	        .g{background-color: green}
	
	    </style>
	</head>
	<body>
	<div id="app" v-cloak>
	
	    <div class="wrap">
	        <div class="box r" v-if="0"></div>
	        <div class="box b" v-else-if="0"></div>
	        <div class="box g" v-else></div>
	    </div>
	
	
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            is_show: true,
	        }
	    })
	</script>
	
	
4. 用button按钮选择颜色

	<head>
	    <meta charset="UTF-8">
	    <title></title>
	    <style>
	        [v-cloak] { display: none; }
	
	        .box {
	             200px;
	            height: 200px;
	        }
	        .r {background-color: red}
	        .b {background-color: blue}
	        .g {background-color: green}
	
	        .active {
	            background-color: deeppink;
	        }
	    </style>
	</head>
	
	<body>
	    <div id="app" v-cloak>
	        
	        <div class="wrap">
	            <div>
	                <button @click="page='r_page'" :class="{active: page === 'r_page'}">红</button>
	                <button @click="page='b_page'" :class="{active: page === 'b_page'}">蓝</button>
	                <button @click="page='g_page'" :class="{active: page === 'g_page'}">绿</button>
	            </div>
	            <div class="box r" v-if="page === 'r_page'"></div>
	            <div class="box b" v-else-if="page === 'b_page'"></div>
	            <div class="box g" v-else></div>
	        </div>
	    </div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            page: 'r_page'
	        }
	    })
	</script>

六、循环指令

1. 语法
		
	v-for='ele in string|array|obj'
	
	
2. 遍历字符串、数组及对象

	<body>
	<div id="app">
	    <i v-for="(c, i) in info">{{ i }}: {{ c }}<br> </i>
	    <hr>
	    <div v-for="e in stus">{{ e }}</div>
	    <hr>
	    <div v-for="v in people">{{ v }}</div>
	    <hr>
	    <div v-for="(v, k, i) in people">{{ i }}-{{ k }}: {{ v }}</div>
	    <hr>
	
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            info: 'good good study',
	            stus: ['aaa', 'bbb', 'ccc'],
	            people: {
	                name: 'byx',
	                age: 18,
	                gender: 'male'
	            }
	        }
	    })
	</script>



3. for循环嵌套

	<body>
	<div id="app">
	    <div v-for="stu in student">
	        <span v-for="(v, k, i) in stu"><span v-if="i !== 0"> | </span>{{ k }}:{{ v }}</span>
	    </div>
	</div>
	</body>
	
	<script src="js/vue.js"></script>
	<script>
	    new Vue({
	        el: '#app',
	        data: {
	            student: [
	                {
	                    name: 'a',
	                    age: 16,
	                    gender: 'female'
	                },
	                {
	                    name: 'b',
	                    age: 17,
	                    gender: 'female'
	                },
	                {
	                    name: 'c',
	                    age: 18,
	                    gender: 'male'
	                }
	            ]
	        }
	    })
	</script>
原文地址:https://www.cnblogs.com/binyuanxiang/p/12057687.html