Vue基礎(chǔ)Day01屬性與事件操作

最近在重寫 vue 基礎(chǔ)講義,歡迎大爺大娘們 留言 【批評斧正】
記得 留言點贊太惠,愛你們,么么噠 :)~~

一.核心內(nèi)容

1.推薦插件安裝

  • vscode有二個常用插件:vetur,Vue 2 Snippets

    • vetur:讓一些vue的關(guān)鍵字能高亮顯示蹂析,還能進行一些語法的檢測。
      • 語法錯誤檢查珍昨,包括 CSS/SCSS/LESS/Javascript/TypeScript等
      • 語法高亮墓毒,包括 html/css/sass/scss/less/js/ts等
  • Vue 2 Snippets:能在平時寫代碼過程中提示功能更強大,對vue的語法有提示

Vue 2 Snippets

2.vue.js是啥

2.1 簡介

  • 官網(wǎng):https://cn.vuejs.org/v2/guide/

  • 概念:不是一個新的語言,而是一個 比 webapi 更方便的 js框架至耻,目的就是讓開發(fā)者更多關(guān)心業(yè)務和數(shù)據(jù)若皱,而不是 dom操作本身镊叁。

  • 特點:

    • 輕量級、高性能走触、組件化的 MVVM 框架晦譬,輕松易上手
    • 雙向數(shù)據(jù)綁定(數(shù)據(jù)驅(qū)動的 Web界面框架)
    • 指令
    • 插件化

2.2 MVVM 模式

  • MVVM 模式
    • MVVM是Model-View-ViewModel的簡寫:模型 - 視圖 - 視圖模型
MVVM模式
MVVM模式
  • 意義
    • 模型 指的是 數(shù)據(jù)
    • 視圖 指的是 頁面
    • 視圖模型 View 和 Model 的橋梁,是 mvvm模式 的核心
      • 負責兩個工作:
      • 工作1:將 模型 轉(zhuǎn)化成 視圖:將后端傳遞的數(shù)據(jù)轉(zhuǎn)化成所看到的頁面
      • 工作2:將 視圖 轉(zhuǎn)化成 模型:將所看到的頁面轉(zhuǎn)化成后端的數(shù)據(jù)
  • 單向和雙向數(shù)據(jù)綁定
    + 如果 兩個工作 都做互广,就是 雙向數(shù)據(jù)綁定
    + 如果 只做 工作1敛腌,就是 單向數(shù)據(jù)綁定

2.2 vue 與 dom 對比

我們通過 vue 和 dom 對比 來看看 聲明是 MVVM 模式

  • webapi 獲取和操作
<input type="text" id="usrtName"/>
<p id="content">您輸入了:</p>

<script>
    // 1.獲取 dom 對象
    let txtName = document.getElementById("usrtName");
    let pCont = document.getElementById("content");
    
    // 2.實時顯示數(shù)據(jù) 到 p 標簽
    txtName.oninput = function () {
        pCont.innerText = "您輸入了:" + txtName.value
    }
 </script>
  • vue 獲取和操作
<!-- View(視圖):html代碼,負責顯示 -->
<div id="app">
    <input type="text" v-model="msg">
    <p>您輸入了:{{msg}}</p>
</div>


<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

<script>
// ViewModel(視圖模型):Vue對象惫皱,負責雙向數(shù)據(jù)綁定像樊, 而 Vue框架已經(jīng)幫我們實現(xiàn)
 new Vue({
    el: "#app",
    // Model(模型):負責數(shù)據(jù)
    data: {
        msg: "hello"
    }
});
</script>

小結(jié):

數(shù)據(jù)一旦發(fā)生改變,頁面上顯示也會發(fā)生改變
這個過程 由 Vue 來自動完成旅敷,不需專門編寫修改頁面顯示的代碼了~~~

3.vue 基本使用

3.1 導入 Vue js文件

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

3.2 視圖布局

  • 頁面上 必須 有一個 vue 視圖容器
<!-- 布局 -->
<div id="app">
    {{ message }} <!--插值表達式-->
</div>

3.3 Vue對象

  • 在頁面中創(chuàng)建的 就是 Vue 對象,扮演著 視圖 與 模型 的橋梁角色

  • 兩個屬性:

    • el 屬性:視圖 選擇器晴音,作為 vue 視圖顯示的容器柔纵,確定 vue 的范圍

      ? 可以是任意 選擇器 (id/類/元素......),但不能html 和 body

    • data 屬性:存放數(shù)據(jù)的地方段多,本質(zhì)上就是一個對象首量,對象里的成員都可以在視圖中使用

<script>
let app = new Vue({
    el: '#app', 
    data: {
        message: '討厭,死鬼~~~',
        dog:{
            name:'ruikey',
            age:2,
            gender:false
        }
    }
});
</script>
  • Vue程序 關(guān)系圖
Vue程序 關(guān)系圖

小結(jié): 三步法

  • 導包 - 將 vue.js 引入到 html頁面

  • 布局 - 寫好頁面標簽

  • Vue實例化 - 創(chuàng)建 vue 實例對象进苍,與頁面元素綁定

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>
    <!-- 基本使用分為三步: 1:導包加缘;2:布局;3:實例化-->

    <!-- 2.布局 -->
    <div id="app">
        <!-- vue的一個插值語法觉啊,相當于挖個坑拣宏,用下面的就是值來填上 -->
        {{ message }}
    </div>

    <!-- 1.導包(開發(fā)環(huán)境的包) -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        //3.實例化
        // ViewModel(視圖模型):Vue對象,負責雙向數(shù)據(jù)綁定杠人, 而 Vue框架已經(jīng)幫我們實現(xiàn)
        let app = new Vue({
            el: '#app',
            // Model(模型):負責數(shù)據(jù)
            data: {
                message: 'Hello Vue!'
            }
        });
    </script>
</body>

</html>

4.常見指令1文本與單雙向綁定

  • Vue指令:就是標簽上的一個自定義屬性勋乾,只不過這個屬性是vue定義的

如何改變一個標簽里的內(nèi)容呢?下面為大家介紹幾個 常見 顯示用的 指令

4.1 v-text(單向綁)

  • 文本內(nèi)容設(shè)置:相當于 innerText嗡善,用來將數(shù)據(jù) 顯示到 所在標簽中

  • 語法:

    • 標簽指令 <span v-text="msg"></span>辑莫,用 msg 替換掉 所在標簽的內(nèi)容
    • 插值語法 <span>hi,{{msg}},天氣不錯~!</span> 罩引,將 msg 插入到 所在標簽 指定位置
    <div id="app" >
        <div v-text='msg1'>汪汪汪</div>
        <div> hi,{{ msg2 }},天氣不錯~各吨!</div>
    </div>
    
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script>
        let app = new Vue({
            el: '#app',
            data: {
                msg1: '<h1>討厭~</h1>',
                msg2: '<h1>死鬼~</h1>'
            }
        });
    </script>
    
  • 特點:

    • 兩者都不解析 html
    • 跟隨數(shù)據(jù)發(fā)生改變(通過 控制臺 console 直接修改 app._data.message = 新值 可以觀察)
    • 單向綁定:只從 model 拿數(shù)據(jù)顯示,自己如果被修改袁铐,不會影響 model 中的數(shù)據(jù)
  • 補充:

    • 標簽指令 和 插值語法 其實 就是 在 html標簽中 寫 js 代碼
    • 也就意味著揭蜒,不僅僅只能寫 data 中的 屬性横浑,只要最終結(jié)果是一個數(shù)據(jù),就可以顯示
    <div id="app">
        <!-- 1.加法運算表達式 -->
        <div v-text="age + 123"></div>
        <!-- 2.變量用法 -->
        <div>我女朋友就是:{{gfName}}</div>
        <!-- 3.對象用法 -->
        <div>寵物:{{dog.name}}</div>
        <!-- 4.三元表達式用法 -->
        <div>性別:{{dog.gender?"公":"母"}}</div>
        <!-- 5.函數(shù)返回值 -->
        <div v-text="hi()"></div>
    </div>
    
    <script>
     let app = new Vue({
         el: '#app',
         // Model(模型):負責數(shù)據(jù)
         data: {
             age: 10,
             msg: '討厭屉更,死鬼~',
             gfName:'你',
             dog:{
                 name:'ruikey',
                 age:2,
                 gender:false
          },
             hi(){
                 return 'hi~';
             }
         }
    });
    </script>
    

* 課堂小彩蛋

問題:如果 一個標簽 同時用了 兩種 語法呢徙融,最終 在 div 中顯示哪一個呢?

選項:1.'討厭~' 2.'死鬼~' 3.都不顯示

<div id="app" v-text='msg1'>
    {{ msg2 }} 
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    let app = new Vue({
        el: '#app',
        data: {
            msg1: '討厭~',
            msg2: '死鬼~'
        }
    });
</script>
  • 結(jié)論:指令內(nèi)容 覆蓋 插值語法內(nèi)容

4.2 v-html(單向綁)

  • 相當于 innerHTML

  • 語法:

    • 標簽指令 <span v-html="msg"></span>瑰谜,用 msg 替換掉 所在標簽的內(nèi)容
<div id="app" >
    <div v-html='msg1'>汪汪汪</div>
</div>

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script>
    let app = new Vue({
        el: '#app',
        data: {
            msg1: '<h1>討厭~</h1>'
        }
    });
</script>

4.3 v-model(雙向綁)

4.3.1 雙向綁定與文本框

如果想將 視圖上的內(nèi)容欺冀,設(shè)置給 Model呢?比如似舵,將 文本框的內(nèi)容 設(shè)置給 Model脚猾。

  • 語法:
    • 標簽指令 <input type="text" v-model="msg"/>,監(jiān)聽 標簽的 內(nèi)容砚哗,以更新數(shù)據(jù)
    • 適用元素:input / textarea / select
    • data中的初始值會設(shè)置給元素
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

<div id="app">
    <input type="text" v-model="msg"/> <!-- 與 msg 屬性值 雙向綁定-->
    <div v-text="msg"></div> <!--獲取 msg 屬性的值顯示-->
</div>

<script>
    let app = new Vue({
        el: '#app',
        data: {
            msg: '討厭龙助,死鬼~'
        }
    });
</script>
  • 執(zhí)行過程:
    • a.當頁面剛打開時,vue 把 data.msg 中的值 設(shè)置給了 input 和 div
    • b.當我們修改 input 中的值時:
      • 會立即更新到 data.msg 中蛛芥,修改了數(shù)據(jù)
      • 數(shù)據(jù)一旦改變提鸟,就會立即更新到關(guān)聯(lián)的 div 中
執(zhí)行過程
* 課堂小彩蛋

問題:如果 直接 修改 data.msg 的值, input 和 div 中的值 哪個會改變仅淑?
選項:1.input 2.div 3.input 和 div

4.3.2 單選框
<h5>你愿意嫁給我嗎称勋?(單選按鈕)</h5>
<input type="radio" name="radio" value="1" v-model="will">Yes,I do
<input type="radio" name="radio" value="2" v-model="will">No, fx off~
<h5>回答:{{will}}</h5>

<script src='./vue.js'></script>
<script>
    new Vue({
        el: '#app',
        data: {
            will: 1 // 設(shè)置默認值
        }
    })
</script>
4.3.3 下拉框
  • 默認值:設(shè)置 某個 選項的 value 值 在 綁定的屬性中
<h5>你祖籍哪的呢?(下拉框)</h5>
<div id='app'>
    <select v-model="provs">
        <option value="湖北省id">湖北省</option>
        <option value="湖南省id">湖南省</option>
        <option value="廣東省id">廣東省</option>
    </select>
    <h1>你的選擇:{{provs}}</h1>
</div>

<script src='./vue.js'></script>
<script>
    new Vue({
        el: '#app',
        data: {
            provs: "湖南省id" // 設(shè)置默認值
        }
    })
</script>
4.3.4 復選框
  • 注意:復選框由于 可以多選涯竟,有多個值赡鲜,所以 需要用 數(shù)組 來做綁定
  • 默認值:設(shè)置多個 復選框value值 在數(shù)組中
<div id='app'>
    <h5>你看中我什么了?(復選按鈕) - {{ans}}</h5>
    <input type="checkbox" name="chk" value="1" v-model="ans">帥氣
    <input type="checkbox" name="chk" value="2" v-model="ans">海拔
    <input type="checkbox" name="chk" value="3" v-model="ans">單手開法拉第的才能

</div>

<script src='./vue.js'></script>
<script>
    new Vue({
        el: '#app',
        data: {
            ans:[1,2]
        }
    })
</script>

5.常見指令2事件綁定

5.1 v-on(事件綁定)

vue 也有一套類似dom的事件監(jiān)聽機制庐船,事件名差不多银酬,但有點差別

  • 語法:
    • 綁定事件:
      • 標簽指令:<標簽名 v-on:事件名="事件方法名或js代碼"></標簽名>
      • 簡 寫:<標簽名 @事件名="事件方法名或js代碼"></標簽名>推薦
    • 編寫 Vue 方法
      • Vue 中的方法筐钟,寫在 methods 屬性中揩瞪,注意:vue 方法中 需要通過 this 訪問 data 數(shù)據(jù)
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

<div id="app">
    <div id='showCount' v-text='count'></div>
    
    <!-- v-on:事件名="一句話簡短js" -->
    <button v-on:click="addCount">點我</button>
    <button v-on:dblclick="addCount">雙擊我</button>
    <button v-on:mouseover="addCount">鼠標移入我</button>

    <!-- 簡寫@,推薦后面都用簡寫 -->
    <button @click="addCount2">點我</button>
    <button @dblclick="addCount2">雙擊我</button>
    <button @mouseover="addCount2">鼠標移入我</button>
</div>

<script>
    let app = new Vue({
        el: '#app',
        data: {
            count: 0,
        },
        // 事件綁定的方法,都放在 methods 屬性中
        methods: {
            addCount() {
                console.log('addCount');
                // vue 方法中 訪問 data 里的值篓冲,需要 加 this李破。(html標簽中訪問data 不需要)
                this.count++;
            }
        },
    });
</script>
* 練習 商品數(shù)量

要求:點擊 加號,數(shù)字 +1 壹将,點擊 減號嗤攻,數(shù)字 -1(不能小于0)

練習 商品數(shù)量
  • 代碼
    • 加號按鈕: 點擊事件中 直接 將 變量 +1
    • 減號按鈕:點擊事件中 綁定 方法,在方法中 判斷后 將變量 -1
<div id='app'>
    <button @click="num++">+</button>
    <input style="width: 30px;text-align: center;" type="text" v-model="num"/>
    <button @click="jian">-</button>
</div>
<script src='./vue.js'></script>
<script>
    new Vue({
        el: '#app',
        data: {
            num: 0
        },
        methods: {
            jian() {
                if (this.num > 0) {
                    this.num--
                }
            }
        }
    })
</script>

5.2 vue中的this

在 vue 的方法中 诽俯,為什么要通過 this才能訪問 data中的數(shù)據(jù)呢屯曹?這個 this 到底是誰?

  • 概念:
    • methods 中 方法里的 this 就是 Vue實例對象
  • 兩個用法:
    • methods里的方法中 訪問 data :this.data
    • methods中的 A方法 調(diào)用 methods 中的 B方法 : this.B()
    • 注意:html 標簽中 訪問 data數(shù)據(jù),不需要通過 this 訪問
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<div id="app">
    <!-- 注意:html標簽中 不需要 加 this 就可以 訪問 data 和 method -->
    <div id='showCount' v-text='count'></div>
    <button @click="addCount">點我啊</button>
</div>

<script>
    let app = new Vue({
        el: '#app',
        // Model(模型):負責數(shù)據(jù)
        data: {
            count: 0,
            gfName: 'ruikey'
        },
        methods: {
            addCount() {
                this.count++;
                console.log(this);
            },
            hi() {
                console.log('hi~~');
                this.addCount();// 訪問 method 中的 另1個方法恶耽,也要加 this
            }
        },
    });
</script>
  • 原理:
    • 在 Vue 實例 data 和 method 的 成員 其實 都直接添加到 了 Vue實例中
原理
* 課堂小彩蛋

問題:關(guān)于vue 中 this 描述,錯誤的是:

  • a. Vue 實例 data 和 method 的 成員 其實 都直接添加到 了 Vue實例中
  • b. method 中 要訪問 data數(shù)據(jù)颜启,需要通過 this 訪問
  • c. html 標簽中 訪問 data數(shù)據(jù)偷俭,不需要通過 this 訪問
  • d. html 標簽中 訪問 data數(shù)據(jù),需要通過 this 訪問

5.3 v-on常用的幾個修飾符

如何控制事件只在某些特別條件下觸發(fā)呢缰盏?

  • 三種常見修飾符:
    • @事件名.stop = "事件處理函數(shù)" 阻止冒泡
    • @事件名.prevent="事件處理函數(shù)" 阻止默認事件
    • @keyup.enter="事件處理函數(shù)" 按鍵盤回車觸發(fā)
5.3.1 阻止冒泡

webapi 中涌萤,通過 事件參數(shù) event.stopPropagation() 來阻止冒泡,而 vue 中 有更簡單語法

  • 語法:@事件名.stop = "事件處理函數(shù)"
<div id="app">
    <div class="box1" @click.stop="box1Click">box1</div>
</div>
<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        methods: {
            box1Click() {
                alert("這是box1");
            }
        }
    })
</script>
5.3.2 阻止默認事件

webapi 中口猜,通過 事件參數(shù) event.preventDefault() 來阻止默認行為负溪,而 vue 中 有更簡單語法

  • 語法:@事件名.prevent= "事件處理函數(shù)"
<div id="app">
    <!--超鏈接 不會跳轉(zhuǎn)了-->
    <a  @click.prevent="aClick">討厭,死鬼~~</a>
</div>

<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        methods: {
            aClick() {
               alter('要死啊~~~');
            }
        }
    })
</script>
5.3.3 同時阻止冒泡和默認

Vue中济炎,如果同時要阻止事件冒泡 和 默認行為川抡,也很方便哦

  • 語法:@事件名.stop.prevent= "事件處理函數(shù)"
<div id="app">
    <div id="box1" @click="box1Click">
        <!--超鏈接 不會跳轉(zhuǎn)了,也不會事件冒泡了-->
        <a  @click.stop.prevent="aClick">討厭须尚,死鬼~~</a>
    </div>
</div>

<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        methods: {
            box1Click(){
                alter('點我孩子 就是點我~~崖堤!');
            },
            aClick() {
               alter('要死啊~~~');
            }
        }
    })
</script>
5.3.4 回車鍵事件

業(yè)務中,經(jīng)常出現(xiàn)輸入后按回車鍵觸發(fā)事件函數(shù)耐床,在Vue中相當簡單

  • 語法:@keyup.enter= "事件處理函數(shù)"
<div id="app">
    <!-- 鍵盤監(jiān)聽事件修飾符.enter 只有回車時才響應 -->
    <input type="text" @keyup.enter="inputData" v-model="inputStr">
</div>

<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        data:{
            inputStr:'',
        },
        methods: {
            inputData() {
               alert('你輸入了:' + this.inputStr)
            }
        }
    })
</script>

6.常見指令3-其他

6.1 v-bind(其他屬性)

在前面我們知道 如何 設(shè)置 標簽的 text文本 或 html文本密幔,但如果要修改 標簽的其他屬性呢?

  • 語法: v-bind:屬性名=msg
  • 簡寫: :屬性名=msg
  • 注意:是單向綁定
<style>
    .active {
        color: red
    }
</style>

<div id="app">
    <h1>請輸入圖片地址</h1>
    <input type="text" v-model="imgsrc" />
    <h1>請輸入圖片標題</h1>
    <input type="text" v-model="imgtit" />
    
    <hr />
    <!--綁定 圖片路徑 和 title-->
    <img width="980" v-bind:src="imgsrc" v-bind:title="imgtit" /> <!--【v-bind】-->
    <img width="980" :src="imgsrc" :title="imgtit+2" /> <!--【簡寫】-->
</div>

<script src="./vue.js"></script>
<script>
    let app = new Vue({
        el: "#app",
        data: {
            imgsrc: './imgs/1.jpg',
            imgtit:'優(yōu)秀死鬼'
        }
    });
</script>
  • PS:v-bind 指令 中的寫法
    • 變量
    • 基本運算
    • 三元表達式

6.2 v-bind(class綁定)

6.2.1 綁定變量

class 屬性中可能有 一個 或 多個 選擇器名撩轰,可以用一個變量保存 并 綁定 到 class屬性

  • 語法:v-bind:class="變量名" 簡寫::class="變量名"

  • 代碼:

<style>
    .error{
        color:red;
        padding:15px;
    }
    .bigFont{
        font-size:50px;
    }
</style>

<!--注意:此處綁定的是 【變量】-->
<div :class="red">hi~~!</div>

<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        data: {
            red: 'error bigFont'
        }
    })
</script>
6.2.2 綁定對象

class 屬性中可能有 一個 或 多個 選擇器名胯甩,但要根據(jù)條件顯示,此時堪嫂,可以用 綁定對象 來解決

  • 語法: v-bind:class={類選擇器名1:布爾值變量,類選擇名2:布爾值變量 ....}

  • 簡寫::class={類選擇器名1:布爾值變量,類選擇名2:布爾值變量 ....}

    ? 如果 對應 類選擇器名 后的 bool值是t rue偎箫,就會顯示選擇器;是false溉苛,則不會顯示在 class屬性中

<style>
    .error{
        color:red;
        padding:15px;
    }
    .bigFont{
        font-size:50px;
    }
</style>

<!--注意:此處綁定的是 【類選擇器名稱】镜廉,由bool變量決定這個 選擇器是否 添加到 class 屬性中-->
<div v-bind:class="{ error: isOk, bigFont: hasError }"></div>

<script src="./vue.js"></script>
<script>
    let app = new Vue({
        el: "#app",
        data: {
            isOk: true,
            hasError: false
        }
    });
</script>
  • 實際開發(fā)時,我們通常直接 把對象 添加到 data 中
<style>
    .error{
        color:red;
        padding:15px;
    }
    .bigFont{
        font-size:50px;
    }
</style>

<div id="app">
    <!--2.為 class設(shè)置 對象{類名1:布爾值變量愚战,類名2:布爾值變量}-->
    <!--注意:此處綁定的是 【類選擇器名稱】娇唯,由bool變量決定這個 選擇器是否 添加到 class 屬性中-->
    <div :class="divClass">hi~~!</div>
</div>
<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        data: {
            divClass: {
                error: true,
                bigFont: true
            }
        }
    })
</script>
* 練習 切換顯示

要求:點擊按鈕,字體變紅放大寂玲;再次點擊塔插,則還原。

切換顯示
<style>
    .error {
        color: red
    }

    .bigFont {
        font-size: 28px;
    }
</style>

<body>
    <div id="app">
        <button @click="changeClass">點我變色 </button>
        <div v-bind:class="{error:isShow,bigFont:isShow}">討厭拓哟,死鬼~~~</div>
    </div>
    
    <script src="./vue.js"></script>
    <script>
        new Vue({
            el: "#app",
            data: {
                isShow: false
            },
            methods: {
                changeClass() {
                    this.isShow = !this.isShow
                }
            }
        })
    </script>
</body>

二.核心案例

1.圖片輪播

要求:點擊 按鈕 切換 圖片顯示

圖片輪播
<div id="app">
    <button @click="prev">上一張</button>
    <img :src="arr[curIndex]" alt="">
    <button @click="next">下一張</button>
</div>


<script src="./vue.js"></script>
<script>
    new Vue({
        el: "#app",
        data: {
            arr: ["http://ossweb-img.qq.com/images/lol/web201310/skin/big145000.jpg",
                "http://ossweb-img.qq.com/images/lol/web201310/skin/big145001.jpg",
                "http://ossweb-img.qq.com/images/lol/web201310/skin/big145014.jpg",
                "http://ossweb-img.qq.com/images/lol/web201310/skin/big145015.jpg",
                "http://ossweb-img.qq.com/images/lol/web201310/skin/big145016.jpg",
                "http://ossweb-img.qq.com/images/lol/web201310/skin/big145017.jpg"
            ],
            curIndex: 0
        },
        methods: {
            prev() {
                this.curIndex > 0 ? this.curIndex-- : alert('已經(jīng)是第一張啦~~~');
            },
            next(){
                this.curIndex < this.arr.length-1 ? this.curIndex++ : alert('已經(jīng)最后一張啦~~~');
            }
        }
    })
</script>

三.擴展內(nèi)容

1. v-on事件修飾符

  • .stop - 調(diào)用 event.stopPropagation()想许。
  • .prevent - 調(diào)用 event.preventDefault()
  • .capture - 添加事件偵聽器時使用 capture 模式。
  • .self - 只當事件是從偵聽器綁定的元素本身觸發(fā)時才觸發(fā)回調(diào)流纹。
  • .{keyCode | keyAlias} - 只當事件是從特定鍵觸發(fā)時才觸發(fā)回調(diào)糜烹。
  • .native - 監(jiān)聽組件根元素的原生事件。
  • .once - 只觸發(fā)一次回調(diào)漱凝。
  • .left - (2.2.0) 只當點擊鼠標左鍵時觸發(fā)疮蹦。
  • .right - (2.2.0) 只當點擊鼠標右鍵時觸發(fā)。
  • .middle - (2.2.0) 只當點擊鼠標中鍵時觸發(fā)茸炒。
  • .passive - (2.3.0) 以 { passive: true } 模式添加偵聽器
  • 示例
<!-- 方法處理器 -->
<button v-on:click="doThis"></button>

<!-- 動態(tài)事件 (2.6.0+) -->
<button v-on:[event]="doThis"></button>

<!-- 內(nèi)聯(lián)語句 -->
<button v-on:click="doThat('hello', $event)"></button>

<!-- 縮寫 -->
<button @click="doThis"></button>

<!-- 動態(tài)事件縮寫 (2.6.0+) -->
<button @[event]="doThis"></button>

<!-- 停止冒泡 -->
<button @click.stop="doThis"></button>

<!-- 阻止默認行為 -->
<button @click.prevent="doThis"></button>

<!-- 阻止默認行為愕乎,沒有表達式 -->
<form @submit.prevent></form>

<!--  串聯(lián)修飾符 -->
<button @click.stop.prevent="doThis"></button>

<!-- 鍵修飾符,鍵別名 -->
<input @keyup.enter="onEnter">

<!-- 鍵修飾符壁公,鍵代碼 -->
<input @keyup.13="onEnter">

<!-- 點擊回調(diào)只會觸發(fā)一次 -->
<button v-on:click.once="doThis"></button>

<!-- 對象語法 (2.4.0+) -->
<button v-on="{ mousedown: doThis, mouseup: doThat }"></button>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末感论,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子紊册,更是在濱河造成了極大的恐慌比肄,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件湿硝,死亡現(xiàn)場離奇詭異薪前,居然都是意外死亡,警方通過查閱死者的電腦和手機关斜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門示括,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人痢畜,你說我怎么就攤上這事垛膝。” “怎么了丁稀?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵吼拥,是天一觀的道長。 經(jīng)常有香客問我线衫,道長凿可,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任授账,我火速辦了婚禮枯跑,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘白热。我一直安慰自己敛助,他們只是感情好,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布屋确。 她就那樣靜靜地躺著纳击,像睡著了一般续扔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上焕数,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天纱昧,我揣著相機與錄音,去河邊找鬼堡赔。 笑死砌些,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的加匈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼仑荐,長吁一口氣:“原來是場噩夢啊……” “哼雕拼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粘招,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤啥寇,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后洒扎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體辑甜,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年袍冷,在試婚紗的時候發(fā)現(xiàn)自己被綠了磷醋。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡胡诗,死狀恐怖邓线,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情煌恢,我是刑警寧澤骇陈,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站瑰抵,受9級特大地震影響你雌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜二汛,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一婿崭、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧习贫,春花似錦逛球、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽幸海。三九已至,卻和暖如春奥务,著一層夾襖步出監(jiān)牢的瞬間物独,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工氯葬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挡篓,地道東北人。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓帚称,卻偏偏與公主長得像官研,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子闯睹,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容