不管标签内部任何内容都会被覆盖,而使用插值表达式
{{}}
则能够动态更改标签的文本值html
{{}}
中支持运算,如字符串拼接vue
<div id="app"> {{ message }} honey <p v-text='message'>honey</p> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ // 挂载点 el:"#app", // 数据对象 data: { message:"Hello vue!!!" } }) </script>
相对于v-text来讲,v-html可以解析html标签mysql
<div id="app"> <p v-text='content'></p> <p v-html='content'></p> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ // 挂载点 el:"#app", // 数据对象 data: { content:"<a href='www.baidu.com'>百度一下</a> " } }) </script>
v-on:method能够简写为@methodios
在方法中调用data中的数据,须要使用this关键字sql
<div id="app"> <input type="button" value="v-on指令" v-on:click="doIt"/> <input type="button" value="v-on简写" @click="doIt"/> <input type="button" value="双击事件" @dblclick="doIt"/> <h2 @click="changeFood">{{ food }}</h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ el:"#app", data:{ food:"土豆肉丝" }, methods:{ doIt:function(){ alert("作IT"); }, changeFood:function(){ // console.log(this.food); this.food+=" 太好吃了!" } } }) </script>
v-on补充:npm
<div id="app"> <input type="button" value="点击" @click="doIt('小黑','小白')"> 请输入: <input type="text" @keyup.enter="sayHi"/> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ el:"#app", methods:{ sayHi:function(){ alert("你好呀!打工人"); }, doIt(p1,p2){ alert("咱们是"+p1+"和"+p2); } } }) </script>
事件绑定时能够传入参数;绑定的事件能够经过
.
加以限制,如上面代码的@keyup.enter
axios
<div id="app"> <button @click="changeIsShow">隐藏或显示图片</button> <button @click="addAge">累加年龄</button> <img src="img/Blueberry.png" alt="蓝莓" v-show="isShow"> <img src="img/Strawberry.png" alt="草莓" v-show="age>17"> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ el:"#app", data:{ isShow:true, age:17 }, methods:{ changeIsShow:function(){ this.isShow=!this.isShow; }, addAge:function(){ this.age += 1; } } }) </script>
<div id="app"> <button @click="changeIsShow">切换显示状态</button> <p v-if="isShow">mysql是怎样运行的 -- v-if修饰</p> <p v-show="isShow">mysql是怎样运行的 -- v-show修饰</p> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ el:"#app", data:{ isShow:true }, methods:{ changeIsShow:function(){ this.isShow=!this.isShow; } } }) </script>
与v-show的区别
v-show:只是隐藏了文本内容,标签至始至终在那里;v-if:隐藏了整个标签
如果频繁切换,通常使用v-show,v-if更加消耗性能api
<div id="app"> <img v-bind:src="imgSrc" > <img :src="imgSrc" :title="imgTitle+'!!!'" :class="isActive?'active':''" @click="toggleActive"> <img :src="imgSrc" :class="{active:isActive}" @click="toggleActive"> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ el:"#app", data:{ imgSrc:"https://typocho-1257109239.cos.ap-chengdu.myqcloud.com/site_appearence/%E5%A4%B4%E5%83%8F/touxiang02.jpg", imgTitle:"极客之美", isActive:true }, methods:{ toggleActive:function(){ this.isActive = !this.isActive; } } }) </script>
v-bind:attribute
简写为:attribute
网络绑定属性支持字符串拼接app
类属性绑定:1. 三元表达式 2. {attribute:true/false}
<div id="app"> <button @click="addFood">增长数据</button> <button @click="remove">移除数据</button> <ul> <li v-for="item in foodStr"> {{ item.name }} </li> <li v-for="(item,index) in foodStr"> {{ index+1 }} {{ item.name }} </li> </ul> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ el: "#app", data:{ foodStr:[ {name:'西兰花炒蛋'}, {name:"蛋炒西兰花"} ] }, methods:{ addFood:function(){ this.foodStr.push({name:"老干妈蘸牛肉"}); }, remove:function(){ this.foodStr.shift(); } } }) </script>
<div id="app"> <button @click="setM">修改message</button> <input type="text" v-model="message" @keyup.enter="alert(message)"> <h2>{{ message }}</h2> </div> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ el:"#app", data:{message:"我是大帅锅"}, methods:{ setM:function(){ this.message = "咱们都是大帅锅!"; } } }) </script>
双向数据绑定: 修改表单数据与修改message的值是同步的
功能强大的网络请求库
<script src="https://unpkg.com/axios/dist/axios.min.js"></script> //请求方式 axios.get(地址?key1=value1&key2=value2).then(function(response){},function(err){}) axios.post(地址,{key1:value1,key2:value2}).then(function(response){},function(err){})
<input type="button" class="get" value="get请求"> <input type="button" class="post" value="post请求"> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script> /** * 接口: 随即笑话 * 请求地址: https://autumnfish.cn/api/joke/list * 请求方法: get * 请求参数: num(笑话条数,数字) * 响应内容: 随即笑话 * */ document.querySelector(".get").onclick = function(){ axios.get("https://autumnfish.cn/api/joke/list?num=3") .then(function(response){ console.log(response); }) } /** * 接口: 用户注册 * 请求地址: https://autumnfish.cn/api/user/reg * 请求方法: post * 请求参数: username(用户名,字符串) * 响应内容: 注册成功或失败 * */ document.querySelector(".post").onclick = function(){ axios.post("https://autumnfish.cn/api/user/reg", {username:"帝释天"}) .then(function(response){ console.log(response); }) } </script>
<div id="app"> <input type="button" value="获取笑话" @click="getJoke"> <div id="content"> {{ joke }} </div> </div> <script src="https://unpkg.com/axios/dist/axios.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/vue"></script> <script> var app = new Vue({ el:"#app", data:{ joke:"这是个笑话" }, methods:{ getJoke:function(){ var that = this; axios.get("https://autumnfish.cn/api/joke") .then(function(response){ that.joke = response.data; },function(error){ console.log(error); }) } } }) </script>
axio回调函数中的this已经改变了,没法访问到data中的数据,所以先把this保存起来,以便在回调函数中直接使用保存起来的
this