指令是一个带有v-前缀的特殊标签属性, 指令属性的值预期是单个JavaScript表达式.
指令名称 指令作用 备注
v-html 显示与解析HTML代码
v-text 原封不动的展示
v-for 遍历与循环功能 遍历数字,字符串,对象,数组
v-bind 绑定属性 简单形式 :属性名="值"
v-model 双向绑定 只支持input,select,textarea
v-show 显示与隐藏 隐藏只是样式:style="display=none"
v-if 判断 v-if/v-else-if/v-else
v-on 绑定事件 简写 @事件名=方法名()
v-html与v-text
html会解析HTML标签(相当:innerHTML)
text不会解析HTML标签(相当:innerText)
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vuejs/vue.js"></script></head><body>
<div id="app">
<span id="myspan">{{msg}}</span>
<!--
使用指令写法来设置数据
注:指令中获取数据,不需要写表达式{{}}
-->
<span v-html="msg"></span>
<span v-text="msg"></span></div>
<!--
指令:vue设计的一种特殊的标签,v-指令名称
--><script>
//原生的js代表为这个myspan加数据
/**
* innerText:会把加上的内容原样输出(不会当作html标签进行识别与编译)
* innerHTML:会去识别与编译咱们的html标签
*/
/*
document.getElementById("myspan").innerHTML = "<h1>喔为...</h1>";
document.getElementById("myspan2").innerText = "<h1>喔为...</h1>";
*/
new Vue({
el:"#app",
data:{
msg:"<h1>喔为...</h1>"
}
})
</script>
</body></html>
v-for
遍历咱们的数据(数字,字符串,对象,集合)
数字就是普通的循环 for(var i=1;i<=数字;i++)
字符串是拿到每一个字母
对象循环 <span v-for="(v,k,i) in 对象"></span>
ov:代表对象的属性值
ok:代表对象的属性名
oi:代表索引
数组循环 <span v-for="(v,i) in 数组"></span>
ov:代表对象的属性值
oi:代表索引
<!DOCTYPE html><html lang="en"><head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vuejs/vue.js"></script></head><body>
<div id="app">
<!--遍历数字 for(var i=1;i<=5;i++)-->
<ul>
<li v-for="v in num">{{v}}</li>
</ul>
<!--遍历字符串:拿到字符串中的每一个值-->
<ul>
<li v-for="v in name">{{v}}</li>
</ul>
<!--
遍历对象
(v) 如果只写一个值,只获取value的值
(v,k) v:是value的值,k:是key(属性)
(v,k,i) v:是value的值,k:是key(属性) ,i:索引
-->
<ul>
<li v-for="(v,k,i) in smalltxt">{{k}} - {{v}} -{{i}}</li>
</ul>
<!--遍历数组
(v,i) : v:当前的数据值 i:当前遍历索引
-->
<ul>
<li v-for="(v,i) in hobbys">{{v}}==={{i}}</li>
</ul></div>
<script>
/**
* v-for:进行相应的循环(数字,字符串,对象,数组)
*/
new Vue({
el:"#app",
data:{
num:5,
name:"zhang",
smalltxt:{
name:"斗罗大罗",
author:"杨哥",
sn:"34325Nfe"
},
hobbys:["吃饭","睡觉","打豆豆","垃圾"]
}
})
</script>
</body></html>
v-bind的使用
bind主要是用于绑定相应的属性 <标签 v-bind:属性名="属性值">
bind有一种简写形式 <标签 :属性名="属性值">
如果直接把整个对象进行属性绑定 <标签 v-bind="对象">
<!DOCTYPE html><html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml"><head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vuejs/vue.js"></script></head><body>
<div id="app">
<!--
标准写法-> v-bind:属性名
v-bind:src -> 绑定相应的属性(里面的值可以从data中获取)
简写形式-> :属性名
多个属性绑定
v-bind="对象"
-->
<img v-bind:src="imgUrl" v-bind:height="height" />
<img :src="imgUrl" :height="height" />
<img v-bind="img" />
</div>
<script>
/**
*/
new Vue({
el:"#app",
data:{
imgUrl:"imgs/1.jpg",
height:120,
//这个对象中有多个属性
img:{
src:"imgs/1.jpg",
height:240,
mei:"haha"
}
}
})
</script>
</body></html>
v-model
主要是用于完成双向的绑定
只能用于:input,select,textarea
<!DOCTYPE html><html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml"><head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vuejs/vue.js"></script></head><body>
<div id="app">
名称:<input type="text" v-model="inputVal"> <br>
{{inputVal}}
<hr>
爱好:
<input v-model="checkboxVal" value="1" type="checkbox">看电影
<input v-model="checkboxVal" value="2" type="checkbox">看小说
<input v-model="checkboxVal" value="3" type="checkbox">看漫画
<input v-model="checkboxVal" value="4" type="checkbox">垃圾
<br>
{{checkboxVal}}
<hr>
性别:
<input v-model="radioVal" value="1" type="radio">男
<input v-model="radioVal" value="2" type="radio">女
<input v-model="radioVal" value="3" type="radio">叨客
<br>
{{radioVal}}
<hr>
<select v-model="selectVal">
<option value="1">中国</option>
<option value="2">日本</option>
<option value="3">美国</option>
</select>
<br>
{{selectVal}}
<hr>
<textarea v-model="textareaVal"></textarea>
<br>
{{textareaVal}}</div>
<script>
/**
* v-model:只能在表单标签中使用(input,select,textarea)
*/
new Vue({
el: "#app",
data: {
inputVal:"我是杨杨我怕谁!",
checkboxVal:["1","3"],
radioVal:2,
selectVal:2,
textareaVal:"sdfsfd"
}
})
</script>
</body></html>
v-show&v-if
v-show用于展示和隐藏 <标签 v-show="true/false">
v-if <标签 v-if="条件">...
show只是隐藏标签,if直接就不会出现不满足条件的标签
v-show的案例代表
最后的效果是有一个按钮,点一下显示图片,再点一下隐藏图片
<!DOCTYPE html><html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml"><head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vuejs/vue.js"></script></head><body>
<div id="app">
<button onclick="showyishow()" >点我啊</button> <br />
<!--
v-show:true(显示)/fales(不显示)
注:不显示(style="display: none;")
-->
<img src="imgs/1.jpg" v-show="isShow" />
</div>
<script>
/**
* v-model:只能在表单标签中使用(input,select,textarea)
*/
var vue = new Vue({
el: "#app",
data: {
isShow:false
}
})
function showyishow() {
vue.isShow = !vue.isShow;
}
</script>
</body></html>
v-if的案例
<!DOCTYPE html><html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml"><head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vuejs/vue.js"></script></head><body>
<div id="app">
<!--
if:如果未满足条件,页面就直接 没有这元素
show:元素存在,只在隐藏起来了
-->
<div v-if="age<18">
未成年人禁止入内
</div>
<div v-else-if="age>=18 && age<60">
客观请进,这里欢迎您
</div>
<div v-else>
老神仙,不食人间烟火
</div>
</div>
<script>
/**
* v-model:只能在表单标签中使用(input,select,textarea)
*/
var vue = new Vue({
el: "#app",
data: {
age:10
}
})
// alert(0)
// vue.age = 89;
</script>
</body></html>
v-on 事件绑定
事件绑定可以直接使用v-on <标签 v-on:事件名=方法名>
调用的方法可以不加()
v-on有一种简写形式 <标签 @事件名=方法名>
<!DOCTYPE html><html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml" xmlns:v-on="http://www.w3.org/1999/xhtml"><head>
<meta charset="UTF-8">
<title>Title</title>
<script src="vuejs/vue.js"></script></head><body>
<div id="app">
<!--
这里的方法加不加括号都可以执行
v-on:事件名="方法名()"
@事件名="方法名()"
-->
<button v-on:click="say()">点我有惊喜...</button>
<button @click="hello('风语咒')">再点我啊!!!</button>
<button @click="age++">{{age}}</button>
</div>
<script>
var vue = new Vue({
el: "#app",
data: {
name:"xxx",
age:12
},
methods:{
say(){
alert("点啊,你个瓜娃子!")
},
hello(msg){
console.debug(this.name+"出来看:"+msg);
}
}
})
</script>
</body></html>
(本文由源码时代技术老师撰写,转载请注明出处)