指令是一个带有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 = "喔为...";
document.getElementById("myspan2").innerText = "喔为...";
*/
new Vue({
el:"#app",
data:{
msg:"喔为..."
}
})
</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> (本文由源码时代技术老师撰写,转载请注明出处)