不管標籤內部任何內容都會被覆蓋,而使用插值表達式
{{}}
則能夠動態更改標籤的文本值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