1 Vue简介
它是一个Javascript框架,作用:简化dom的操作,以及响应式编程
2 在webstorm中创建工程
(1)
<script type="text/javascript" src="js/vue.js"></script>
(2) body 中创建一个div标签
<body>
<div id="app">
{{msg}}
</div>
</body>
(3) 创建自己的js代码
<script type="text/javascript">
//创建一个vue对象
var app=new Vue({
//vue对象挂载到id为app的标签上,那么该标签下的所有元素都可以使用vue对象中的成员
el: "#app",
//数据
data:{
msg:"今天学习vue",
}
})
</script>
3 el属性
把当前vue对象挂载到指定的标签元素上,使其vue生效。
4 Vue指令
4.1 v-text 和v-html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
<span>{{msg}}</span><hr>
<span v-text="msg">你喜欢什么?</span><hr>
<!--v-text:无法解析html标签 v-html可以解析html标签-->
<span v-html="msg">你喜欢什么?</span>
</div>
</body>
<script>
let app=new Vue({
el:"#app",
data:{
msg:"<font color='red'>我喜欢打麻将</font>",
}
})
</script>
</html>
4.2 v-on 点击事件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="app">
<span>{{msg}}</span>
<hr>
<button v-on:click="fun">点击</button>
<!--上面的v-on:缩写为@-->
<button @dblclick="fun2">点击2</button>
</div>
</body>
<script>
let app = new Vue({
el:"#app",
/* 数据 */
data:{
msg:"<font color='red'>今天学习vue</font>",
},
//定义方法
methods:{
fun(){
//this表示vue对象
this.msg="我喜欢打篮球"
},
fun2(){
}
}
})
</script>
</html>
4.3 v-show和v-if
根据表达值的真假,切换元素的显示和隐藏
v-show通过style中disable来控制标签的显示和隐藏 v-if:通过删除和创建标签来控制
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div id="app">
<img src="img/6.jpg" width="200" v-show="age>18&&age<36">
<hr>
<!--v-show通过style中disable来控制标签的显示和隐藏 v-if:通过删除和创建标签来控制-->
<img src="img/9.jpg" width="200" v-if="age>18&&age<36">
<button @click="run">点击</button>
</div>
<script>
let app = new Vue({
el:"#app",
data:{
age:18
},
methods:{
run(){
this.age++
}
}
})
</script>
</body>
</html>
4.4 v-bind 设置元素的属性
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="../js/vue.js"></script>
</head>
<style>
.a{
border: red solid 5px;
}
</style>
<body>
<div id="app">
<img :src="srcUrl" width="200" :title="title" :class="flag?'a':''">
<hr>
<!--v-show通过style中disable来控制标签的显示和隐藏 v-if:通过删除和创建标签来控制-->
<button @click="run">点击</button>
</div>
<script>
let app = new Vue({
el:"#app",
data:{
srcUrl:"img/6.jpg",
title:"忍者神龟",
age:18,
flag:true
},
methods:{
run(){
this.srcUrl="img/9.jpg",
this.title="终极猎手",
this.flag=false
}
}
})
</script>
</body>
</html>
4.5 v-for 循环数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
<ul>
<!--for(数据类型 b:数组){}-->
<li v-for="(item,index) in hobby">
{{item}}--->{{index}}
</li>
</ul>
<table width="500px" border="1" cellspacing="0" class="0">
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
<th>操作</th>
</tr>
<tr v-for="item in users">
<td>{{item.name}}</td>
<td>{{item.age}}</td>
<td>{{item.sex}}</td>
<td>
<button @click="deleteUser(item.name)">删除</button>
<button >编辑</button>
</td>
</tr>
</table>
<input type="text" @keyup.enter="fun()"/>
</div>
</body>
<script>
let app=new Vue({
el:"#app",
data:{
hobby:["好吃","好喝","好色","好赌"],
users:[
{"name":"张三","age":16,"sex":"女"},
{"name":"李四","age":19,"sex":"男"},
{"name":"王五","age":15,"sex":"男"}
]
},
methods:{
deleteUser(name){
alert(name);
},
fun(){
alert("触发了回车键");
}
}
})
</script>
</html>
4.6 v-model 获取和设置表单元素的值.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="app">
<!--v-model会实现双向绑定:表达元素内容改变时,vue中对于的数据也会改变,vue中的数据改变对于的表单元素也会改变-->
<input type="text" v-model="name" />
{{name}}
<button @click="dj">点击</button>
</div>
</body>
<script>
let app=new Vue({
el:"#app",
data:{
name:"哈哈哈"
},
methods:{
dj(){
this.name="呵呵呵";
}
}
})
</script>
</html>