一什么是Vue
Vue是一个构建用户界面的JAVASCRITPO框架。
二怎样使用Vue
1.引入vue.js <script src="vue.js"></script> 2.展示HTML <div id="app"> <input type="text" v-model="msg"> <p>{{msg}}</p> </div> 3.建立vue对象 new Vue({ el: "#app", //表示在当前这个元素内开始使用VUE data:{ msg: "" } })
三在元素中插入值
{{}},里面可以放表达式 指令:是带有V-前缀的特殊属性,通过属性来操作元素 v-text:在元素当中插入值 v-html:在元素不中不仅可以插入文本,还可以插入标签 v-if: 根据表达式的真假值来动态插入和移除元素 v-show:根据表达式的真假值来隐藏和显示元素 v-for:根据变量的值来循环渲染元素 v-on:监听元素事件,并执行相应的操作 对数组的操作: push pop shift unshift splice reverse v-bind:绑定元素的属性来执行相应的操作 v-model:实现了数据和视图的双向绑定 分成了3步: 1)把元素的值和数据相绑定 2)当输入内容时,数据同步发生变化,视图 ---数据的驱动 3)当改变数据时,输入内容也会发生变化,数据-》视图的驱动
1. v-html动态生成html标签
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <style> ul li{ list-style: none; } </style> <body> <div id="app"> <ul> <li> <input type="checkbox">苹果 </li> <li> <input type="checkbox">香蕉 </li> <li> <input type="checkbox">葡萄 </li> <li> <input type="checkbox" v-on:click="create()">其它 </li> <li v-html="htmlstr" v-show="test"></li> </ul> </div> <script> var vm = new Vue({ el: "#app",//表示在当前这个元素内开始使用VUE data:{ htmlstr:"<textarea></textarea>", test:false }, methods:{ create:function () { this.test=!this.test; } } }) </script> </body> </html> <!--动态生成HTML--> <!-- 小知识点:去掉li标签前面的小点,list-style=none 复选框:type="checkbox" v-html="htmlstr"在元素不中不仅可以插入文本,还可以插入标签,动态生成HTML标签 v-show:根据表达式的真假值来隐藏和显示元素 -->
2 . v-model
<!--双向绑定--> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <input type="text" v-model="msg"> <p>{{msg}}</p> </div> <script> new Vue({ el:"#app",//表示在当前这个元素内开始使用Vue data:{ msg:"" } }) </script> </body> </html> <!-- v-model:实现了数据和视图的双向绑定 分成了3步: 1)把元素的值和数据相绑定 2)当输入内容时,数据同步发生变化,视图 ---数据的驱动 3)当改变数据时,输入内容也会发生变化,数据-》视图的驱动 -->
v-on
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <style> ul li{ list-style: none; display: inline-block; border: 1px solid cornflowerblue; height:40px; line-height: 40px; 120px; text-align: center; } </style> </head> <body> <div id="mybox"> <ul> <li> <span v-on:click="qh(true)">二唯码登录</span> </li> <li> <span v-on:click="qh(false)">邮箱登录</span> </li> </ul> <div v-show="temp"> <img src="erma.jpg"> </div> <div v-show="!temp"> <form action="http://mail.163.com" method="post"> <p><input type="email"></p> <p><input type="password"></p> <p><input type="submit" value="登录"></p> </form> </div> </div> <script> new Vue({ el: "#mybox", data: { temp: true }, methods: { qh: function (t) { this.temp = t } } }) </script> </body> </html>
v-for
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <style> ul li{ list-style: none; } </style> </head> <body> <div id="app"> <ul> <li v-for="(item,index1) in aaa"> {{item}}:{{index1}} </li> </ul> <ul> <li v-for="item1 in ccc"> {{item1.username}} {{item1.age}} {{item1.sex}} </li> </ul> <ul> <li v-for="(item3,key,index) in bbb"> {{item3}}:{{key}}:{{index}} </li> </ul> <input type="button" value="点我吧" @click="show()"> <a :href="url">我想去百度</a> </div> <script> new Vue({ el:"#app",//表示在当前这个元素内开始使用VUE data:{ aaa:[11,22,33,44,55], bbb:{a:"刘能",b:"赵四",c:"谢广坤",d:"谢大脚",e:"王老七"}, ccc:[ {username:"长贵"}, {age:20}, {sex:"male"} ], str:"亲爱的,我来了", url:"http://www.baidu.com" }, methods:{ show:function () { this.aaa.pop() } } }) </script> </body> </html> <!-- v-for:根据变量的值来循环渲染元素 -->
v-if ,v-else,v-show
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <p v-if="aaa">我是斯蒂芬库里</p> <p v-else>我是凯文杜兰特</p> <p v-show="bbb">我是泽勒卡戴珊</p> <p v-show="ok" style="color: aqua">你们喜欢我吗?</p> </div> <script> var vm = new Vue({ el:"#app", data:{ aaa:true, bbb:true, ok:true } }) window.setInterval(function () { vm.ok = !vm.ok; },500) </script> </body> </html> <!-- v-if: 根据表达式的真假值来动态插入和移除元素,当然有if的情况下就必须有else v-show:根据表达式的真假值来隐藏和显示元素 --> <!-- window.setInterval(function () { vm.ok = !vm.ok; },500) 用来做时间间隔的 -->
v-model
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> <style> ul li{ list-style: none; } </style> </head> <body> <div id="app"> <input v-model="msg"> <p>{{msg}}</p> <input type="button" value="变化" @click="change"> </div> <script> new Vue({ el: "#app", //表示在当前这个元素内开始使用VUE data:{ msg: "aaaaa" }, methods: { change: function () { this.msg = 8888888; } } }) </script> </body> </html> <!-- v-model双向绑定还可以改变数据 -->
模板
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <p>{{msg}}</p> <p>{{80+2}}</p> <p>{{20>30}}</p> {{msg}} 我是:<h1 v-text="msg">{{str}}</h1> 你是:<h1 v-text="msg">2222222222222</h1> <h2 v-html="hd"></h2> <h2 v-html="str"></h2> </div> <script> new Vue({ el: "#app", //表示在当前这个元素内开始使用VUE data:{ msg: "我是老大", hd: "<input type='button' value='你是小三'>", str: "我要发财!" } }) </script> </body> </html>
V-HTML
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="vue.js"></script> </head> <body> <div id="app"> <p>{{msg}}</p> <p>{{80+2}}</p> <p>{{20>30}}</p> {{msg}} 我是:<h1 v-text="msg">{{str}}</h1> 你是:<h1 v-text="msg">2222222222222</h1> <h2 v-html="hd"></h2> <h2 v-html="str"></h2> </div> <script> new Vue({ el: "#app", //表示在当前这个元素内开始使用VUE data:{ msg: "我是老大", hd: "<input type='button' value='你是小三'>", str: "我要发财!" } }) </script> </body> </html>