1、v-on
<!-- 方法处理器 --> <button v-on:click="doThis"></button> <!-- 动态事件 (2.6.0+) --> <button v-on:[event]="doThis"></button> <!-- 内联语句 --> <button v-on:click="doThat('hello', $event)"></button> <!-- 缩写 --> <button @click="doThis"></button> <!-- 动态事件缩写 (2.6.0+) --> <button @[event]="doThis"></button> <!-- 停止冒泡 --> <button @click.stop="doThis"></button> <!-- 阻止默认行为 --> <button @click.prevent="doThis"></button> <!-- 阻止默认行为,没有表达式 --> <form @submit.prevent></form> <!-- 串联修饰符 --> <button @click.stop.prevent="doThis"></button> <!-- 键修饰符,键别名 --> <input @keyup.enter="onEnter"> <!-- 键修饰符,键代码 --> <input @keyup.13="onEnter"> <!-- 点击回调只会触发一次 --> <button v-on:click.once="doThis"></button> <!-- 对象语法 (2.4.0+) --> <button v-on="{ mousedown: doThis, mouseup: doThat }"></button>
Example
1、 v-text v-html v-on v-model
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>v-text v-html v-on v-model</title> </head> <body id="body"> <div id="app" class="top"> {{ message }} <br> <span>{{message}}</span> <p>{{person}}</p> <h4>{{person.name}} {{person.location}}</h4> <p>{{campus}} </p> <ul> <li>{{campus[0]}}</li> </ul> <h2 v-text="message"></h2> <h2 v-text="person.name" v-on:click="changePerson('老王')"></h2> <h2 v-text="person.name+'!'"></h2> <h3>{{person.name}} abc</h3> <h4 v-html="content"></h4> <h5 v-text="content"></h5> <input type="button" value="v-on指令" v-on:click="doIt()"> <input type="button" value="v-on简写" @click="doIt('test')"> <button v-on:dblclick="doIt(123)">双击</button> <br> <input type="text" @keyup.enter="doIt(message)" v-model="message"> <button @click="setInput('超级宝宝')">修改信息</button> </div> <!-- 开发环境版本,包含了有帮助的命令行警告 --> <script src="js/vue.js"></script> <script> var app = new Vue({ el: '#app', // el:'.top', data: { message: "我的vue测试", person: { id: 1, name: "张三", location: "北京" }, campus: ["东", "西", "南", "北"], content: "<a href='https://www.baidu.com'>百度</a>" }, methods: { doIt: function (p1) { alert(p1) }, changePerson: function (name) { this.person.name += "暴打" + name; }, setInput:function (input) { this.message = input; } } }) </script> </body> </html>
2、v-if v-show v-bind
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>v-if v-show v-bind</title> <style> .active{ border:#ff5d1d solid 2px; } </style> </head> <body> <div id="app"> <button @click="sub">-</button> <span>{{num}}</span> <button @click="add">+</button> <div id="img"> <img v-show="showImage" src="image/1.png" width="200" height="340" alt=""> <p v-if="showImage">图片显示v-if</p> </div> <div> <img v-bind:src="srcImg" width="200" height="340" alt=""> <img :src="srcImg" width="200" height="340" alt="" :title="imgTitle"> <img :src="srcImg" width="200" height="340" alt="" :title="imgTitle" :class="isActive ? 'active' :''" @click="toggleImg"> <img :src="srcImg" width="200" height="340" alt="" :title="imgTitle" :class="{active:isActive}" @click="toggleImg"> </div> </div> <script src="js/vue.js"></script> <script> var app = new Vue({ el:'#app', data:{ num:1, showImage:false, isActive:false, srcImg:"image/1.png", imgTitle:"这是一个测试的title" }, methods:{ add:function () { if(this.num<10){ this.num++; this.showImage = toggleImage(this.num); }else{ alert("已经最大!"); } }, sub:function () { if(this.num>0){ this.num--; this.showImage = toggleImage(this.num); }else{ alert("已经最小"); } }, toggleImg:function () { this.isActive = !this.isActive; } } }); function toggleImage(num) { return (num % 2) == 0 ? true:false; } </script> </body> </html>
3、v-text v-show v-bind
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>v-text v-show v-bind</title> </head> <body> <div id="mask"> <a href="javascript:void(0)"> <img src="resources/left.png" @click="prev" v-show="index>0"> </a> <img :src="imgArr[index]" width="300" height="500"> <a href="javascript:void(0)"> <img src="resources/right.png" @click="next" v-show="index<imgArr.length-1"> </a> </div> <script src="js/vue.js"></script> <script> var app = new Vue({ el:'#mask', data:{ imgArr:[ 'image/1.png', 'image/2.png', 'image/3.png' ], index:0 }, methods:{ prev:function () { if(this.index < 0) return; this.index--; }, next:function () { if(this.index > this.imgArr.length-1) return; this.index++; } } }) </script> </body> </html>
4、v-for
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>v-for</title> </head> <body> <div id="app"> <button @click="add">添加人员</button> <button @click="sub">移除人员</button> <ul> <li v-for="(item,index) in arr">索引:{{index}} -- 值:{{item}}</li> </ul> <h3 v-for="(person,index) in persons">{{index}} . 姓名:{{person.name}} ,年龄:{{person.age}}</h3> </div> <script src="js/vue.js"></script> <script> var app = new Vue({ el: "#app", data: { arr: ["北京测试", "上海测试", "北京3", "北京4", "北京5"], persons: [ {name: "张三", age: 1211}, {name: "李四", age: 1222}, {name: "王二", age: 122}, {name: "赵六", age: 122}, {name: "无敌", age: 121}, ] }, methods: { add:function () { this.persons.push({name:"老王",age:Math.floor(Math.random()*100)}); }, sub:function () { this.persons.shift(); } } }) </script> </body> </html>
5、查询天气
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>vue-example2</title> <link rel="stylesheet" href="css/bootstrap.css"> <style> .myCenter { text-align: center; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 900px; height: 500px; } </style> </head> <body> <div id="app" class="myCenter"> <div class="panel-primary"> <div class="control-label"><img src="image/comma_face_02.png" height="64" width="64"/></div> <div class="form-group"> <input type="text" v-model="city" @keyup.enter="searchWeather" placeholder="请输入城市" class="input-lg"> <button @click="searchWeather" class="input-lg">搜 索</button> </div> <div class="media-bottom"> <a href="javascript:void(0)" @click="changeCity('北京')">北京</a> <a href="javascript:void(0)" @click="changeCity('上海')">上海</a> <a href="javascript:void(0)" @click="changeCity('广州')">广州</a> <a href="javascript:void(0)" @click="changeCity('深圳')">深圳</a> </div> </div> <ul class="list-inline"> <li v-for="item in weatherList"> <div class="label-info"><span class="icon-bar input-lg">{{item.type}}</span></div> <div class="label-warning"> <b>{{item.low}}</b> ~ <b>{{item.high}}</b> </div> <div class="label-success"><span>{{item.date}}</span></div> </li> </ul> </div> <script src="js/axios.js"></script> <script src="js/vue.js"></script> <script src="js/myWeather.js"></script> </body> </html>
/* * 请求地址:http://wthrcdn.etouch.cn/weather_mini * 请求参数:city(城市名) * 返回:天气信息 * */ var app = new Vue({ el: '#app', data: { city: '昆明', weatherList: [], }, methods: { searchWeather: function () { axios.get("http://wthrcdn.etouch.cn/weather_mini?city=" + this.city) .then(response => { console.log(response); this.weatherList = response.data.data.forecast; }) .catch(err => { console.log(err.message); }) }, changeCity:function (city) { this.city = city; this.searchWeather(); } } });
来源:https://www.cnblogs.com/asker009/p/12291852.html