Vue.js 快速上手精華梳理-快速上手核心重點【建議收藏】

PS:本文福利首發於公衆號「讓我遇見相似的靈魂」,獲取最新Vue教程資源 回覆關鍵字:Vue
左手代碼,右手吉他,這就是天下:如果有一天我遇見相似的靈魂 那它肯定是步履艱難 不被理解 喜黑怕光的。如果可以的話 讓我觸摸一下吧
它也一樣孤獨得太久。 不一樣的文藝青年,不一樣的程序猿。

Vue.js 快速上手精華梳理

初體驗

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app" v-bind:title="title">
        {{message}}
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                message:'hello vue!',
                title:'bennyrhys00'
            }
        })
    </script>
</body>
</html>

條件指令

if

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app">
        <div v-if="flag">v-if 是移除元素</div>
        <div v-show="flag">v-show 是display隱藏元素</div>
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                flag:'true'
            }
        })
    </script>
</body>
</html>

循環指令

99乘法表

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app">
        <table>
            <tr v-for="i in num">
                <td v-for="j in i">{{i}}*{{j}}={{i * j}}</td>
            </tr>
        </table>

    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                num:9
            }
        })
    </script>
</body>
</html>

處理用戶輸入

消息翻轉v-on:click=""

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app">
        <div>{{message}}</div>
        <button v-on:click="reseverMessage"></button>
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                message: "bennyrhys"
            },
            methods:{
                reseverMessage() {
                   // alert("hello")
                    this.message=this.message.split('').reverse().join('')
                }
            }
        })
    </script>
</body>
</html>

同步數據Input v-model

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app">
        <div>{{message}}</div>
        <input type="text" v-model="message">
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                message:"bennyrhys"
            }
        })
    </script>
</body>
</html>

組件初體驗

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app">
        直接付給變量<bennyrhys name="vue"></bennyrhys>
<!--        如果是引用的hello變量,v-bind下邊data要定義-->
        間接綁定變量<bennyrhys v-bind:name="hello"></bennyrhys>
    </div>
    <script>
        Vue.component('bennyrhys',{
            <!--        聲明一個變量-->
            props:['name'],
            template:'<h1>hello {{name}}</h1>'
        })
        var app = new Vue({
            el:'#app',
            data:{
                message:"bennyrhys",
                hello:'vue1'
            }
        })
    </script>
</body>
</html>

實例

其實就是對象

生命週期

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app">
        <div>{{a}}</div>
    </div>
    <script>
        var data = {a : 1, b : null}

        // 情況2:凍結data數據,導致後期更改無法影響視圖【只讀】
        // Object.freeze(data)

        var app = new Vue({
            el:'#app',
            data:data,
            // 生命週期方法-創建vue時 Vue1.x用created多,現在Mounted初始化數據用的多
            created() {
                console.log("create init")
            }
        })
        console.log(data.a == app.a) //true
        data.a = 99
        console.log(app.a) // 99
        app.a = 100
        console.log(data.a) //100 【雙向綁定】

        // 情況1:後引入的屬性【但是後來加進的數據不會影響視圖的更新。可以先在外面初始化b:null】
        data.b = 18
        console.log(app.b)

        // 使用$獲取
        console.log(app.$el == document.getElementById("app")) //true
        console.log(app.$data == data) //true
    </script>
</body>
</html>

模板語法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app">
<!--         變量直接插值可以使用{{}}-->
        <div>{{a}}</div>

<!--         如果給特性賦值,不用{{}},要用v-bind:【簡寫:】 v-on:click【簡寫@】-->
<!--        頁面測試app.enableBtn=false-->
        <button v-bind:disabled="!enableBtn" @click="num++">按鈕</button>


<!--        直接顯示html格式-->
        <div v-html="a"></div>

<!--        注意:表達式只能一個-->
        <div>{{num>101 ? 'good' : num}}</div>

     </div>
    <script>

        var app = new Vue({
            el:'#app',
            data:{
                // 直接顯示的字符串
                a : '<h1>hello 字符串</h1>',
                b : null,
                enableBtn: true,
                num: 99
            }
        })
    </script>
</body>
</html>

計算屬性

computed比methed方法多出緩存功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
<!--        computed和方法的區別,computed可以緩存,methed不行-->
        <div>{{reseverMessage}}</div>

<!--        methed調用顯示和computed一樣-->
<!--        <div>{{reseverMessage()}}</div>-->

<!--    通過computed的set進行賦值-->
        <div>{{copyMessage}}</div>
     </div>
    <script>

        var app = new Vue({
            el:'#app',
            data:{
                // 頁面測試app.message='lalassss ss'
                message : 'hello bennyrhys',
                copyMessage: null
            },
            methods:{
                /*reseverMessage() {
                    return this.message.split('').reverse().join('')
                }*/
            },
            computed:{
                //執行的是簡化的get
               /* reseverMessage() {
                    return this.message.split('').reverse().join('')
                }*/

               // 完整的屬性
                reseverMessage:{
                    get() {
                        // 注意會因methed方法同名報錯
                        return this.message.split('').reverse().join('');
                    },
                    // 網頁測試app.reseverMessage="343"
                    set(newVal) {
                        this.copyMessage=newVal
                        console.log("set:"+ newVal);
                    }
                }
            }
        })
    </script>
</body>
</html>

監聽器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app" v-bind:title="title">
<!--        網頁測試app.firstName='li'  app.lastName="si"-->
        {{fullName}}
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                firstName:'zhang',
                lastName:'san',
                fullName:'zhang san'
            },
            /*computed: {
                fullName() {
                    return this.firstName+" "+this.lastName;
                }
            }*/

            // 用於網絡請求耗時長的異步、開銷很大操作,一般用computed本地變化就行
            watch:{
                firstName(val) {
                    this.fullName = val + ' ' + this.lastName;
                },
                lastName(val) {
                    this.fullName = this.firstName + ' ' + val;
                }
            }
        })
    </script>

</body>
</html>

Class綁定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app" v-bind:title="title">
        <!--        普通版-->
        <div class="m1">{{msg}}</div>

        <!--        想控制樣式顯示或是隱藏,就用到class綁定【注意{},是單括號}】-->
        <!--        頁面測試app.flag=false,樣式消失
                    可以同時綁定多個class樣式 測試app.hasBorder=false
        -->
        <div v-bind:class="{m1:flag, m3:hasBorder }" class="m2">{{msg}}</div>

        <!--樣式比較多,直接填寫定義好的對象-->
        <div v-bind:class="classObj" class="m2">{{msg}}</div>

        <!--定義樣式數組        -->
        <div v-bind:class="[flag ? dm1 : '',dm3]">{{msg}}</div>
        <!--化簡三目運算        -->
        <div v-bind:class="[{m1:flag},dm3]">{{msg}}</div>

    </div>

    <script>
        var app = new Vue({
            el:'#app',
            data:{
                msg:'hello bennyrhys!',
                flag:true,
                hasBorder:true,
                // 樣式定義比較多,給他封裝成對象
                classObj: {
                    m1:true,
                    m3:true
                },
                // 定義數組
                dm1:'m1',
                dm3:'m3'
            }
        })
    </script>

    <style>
        .m1{
            font-weight: bold;
            color: red;
        }
        .m2{
            font-size: 20px;
        }
        .m3{
            border: 1px solid #cccccc;
        }
    </style>

</body>
</html>

compted this.flag控制true false

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主要測試computed常用</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<!--     app.message='hi bennyrhys' 可以到頁面的console檢驗-->
    <div id="app" v-bind:title="title">
        <!--        普通版-->
        <div class="m1">{{msg}}</div>

        <!--        想控制樣式顯示或是隱藏,就用到class綁定【注意{},是單括號}】-->
        <!--        頁面測試app.flag=false,樣式消失
                    可以同時綁定多個class樣式 測試app.hasBorder=false
        -->
        <div v-bind:class="{m1:flag, m3:hasBorder }" class="m2">{{msg}}</div>

        <!--樣式比較多,直接填寫定義好的對象-->
        <div v-bind:class="classObj" class="m2">{{msg}}</div>
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                msg:'hello bennyrhys!',
                flag:true,
                hasBorder:true,
            },
            computed: {
                classObj() {
                    //測試撤銷樣式app.flag=false app.hasBorder=false
                    return{
                        m1:this.flag,
                        m3:this.hasBorder
                    }
                }
            }
        })
    </script>

    <style>
        .m1{
            font-weight: bold;
            color: red;
        }
        .m2{
            font-size: 20px;
        }
        .m3{
            border: 1px solid #cccccc;
        }
    </style>
</body>
</html>

Style綁定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>主要測試computed常用</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app" v-bind:title="title">
    <!--    單{},    -->
    <div v-bind:style="{color:fontColor, fontSize:fontSize+'px'}">{{msg}}</div>

    <!--綁定對象    -->
    <div v-bind:style="styleObj">{{msg}}</div>

    <!--綁定數組    -->
    <div v-bind:style="[styleObj,styleObj2]">{{msg}}</div>

</div>
<script>
    var app = new Vue({
        el:'#app',
        data:{
            msg:'hello bennyrhys!',
            fontColor: 'red',
            fontSize: 30,
            // 定義成對象
            styleObj: {
                color: 'red',
                fontSize: '30px'
            },
            // 數組
            styleObj2: {
                border: '1px solid #ccc'
            }
        }
    })
</script>

<style>
    .m1{
        font-weight: bold;
        color: red;
    }
    .m2{
        font-size: 20px;
    }
    .m3{
        border: 1px solid #cccccc;
    }


</style>

</body>
</html>

條件渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app" v-bind:title="title">
<!--        條件渲染 根據變量控制,app.isShow=true-->
        <div v-if="isShow">hello bennyrhys</div>

<!--        template不參與頁面渲染,但是能控制多條語句,同時顯示 測試app.isShow=true-->
        <template v-if="isShow">
            <p>hello</p>
            <h1>bennyrhys</h1>
            <span>version</span>
        </template>

<!--        v-else-->
        <div v-else>瑞新</div>

<!--        v-else-if  測試app.isShow=true app.gender=1-->
        性別:
        <div v-if="gender == 0"></div>
        <div v-else-if="gender == 1"></div>
        <div v-else>未知</div>


<!--        渲染緩存複用【默認】 如果不想用默認的【用key區分】 測試app.loginType='email'-->
        <template v-if="loginType == 'username'">
            <label>用戶名</label>
            <input type="text" placeholder="請輸入用戶名" key="username" >
        </template>
        <template v-else>
            <label>郵箱地址</label>
            <input type="text" placeholder="請輸入郵箱地址" key="email">
        </template>

<!--        v-show【if是從dom中刪除,show是一直存在控制display顯示或隱藏】【不支持和template一起使用】-->
        <div v-show="!isHide" >hello v-show</div>


<!--        【總結:頻繁顯示隱藏show,偶爾if】-->
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
               isShow:false,
                gender:0,
                loginType:'username',
                isHide:false

            }
        })
    </script>

</body>
</html>

列表渲染

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app" v-bind:title="title">
<!--    遍歷數組 【注意key 】-->
        <table>
            <tr>
                <td>索引</td>
                <td>書名</td>
                <td>作者</td>
            </tr>
            <tr v-for="(book, index) of books" v-bind:key="index">
<!--            注意:in等價於of    -->
                <td>{{index}}</td>
                <td>{{book.name}}</td>
                <td>{{book.author}}</td>
            </tr>
        </table>


<!--    遍歷對象元素  ()內元素排序:元素 key index 【注意key,循環渲染被認爲同一個div】-->
        <div v-for="(s, k, i) in site" v-bind:key="i ">
            {{s}}--{{k}}--{{i}}
        </div>


<!--    存在問題:數組無法響應式更新

        測試存入,但頁面沒更新
        app.books[4]={name:'故事新編',author:'魯迅'}

        測試存入:調用變異方法,是js原有的vue封裝,內含了視圖更新
        app.books.push({name:'故事新編',author:'魯迅'})

        元素出棧:app.books.pop()

        刪除元素:app.books.splice(0,1)表示從第0個開始,刪除一個

        替換數組:非變異方法,不會改變原始數組【filter、concat、slice】
            錯誤做法 app.books.concat({name:'故事新編',author:'魯迅'})
            正確做法 app.books=app.books.concat({name:'故事新編',author:'魯迅'})

        刪除替換元素:【參考官方set方法】
            app.books.splice(0,1,{name:'故事新編',author:'魯迅'})


        對象更新存在問題:
            注意:提前定義元素,保證後期響應式更新
            Vue.set(app.site,'ip','0.0.0.0')
            app.$set(app.site,'ip','0.0.0.0')
            直接寫是不會變的

-->
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                books:[
                    {
                        name:'三國演義',
                        author:'羅貫中'
                    },
                    {
                        name:'水滸傳',
                        author:'施耐庵'
                    },
                    {
                        name:'西遊記',
                        author:'吳承恩'
                    },
                    {
                        name:'紅樓夢',
                        author:'曹雪芹'
                    }
                ],
                site:{
                    url:'www.996cloud.work',
                    name:'不才工作室',
                    author:'bennyrhys'
                }
            }
        })
    </script>

</body>
</html>

事件處理

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app" v-bind:title="title">
        <div>{{counter}}</div>
<!--         @click="counter++"寫一個方法替代效果和++一樣-->
        <input type="button" value="自增" @click="increment(2)">

<!--        注意事件修飾符,按鍵修飾符-->
        <input type="text" v-on:keydown.ctrl.enter="submit">
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
               counter:0
            },
            methods:{
                increment(step) {
                    this.counter = this.counter+step;
                },
                submit(){
                    console.log("submit")
                }
            }
        })
    </script>
</body>
</html>

表單輸入綁定

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue01</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app" v-bind:title="title">
<!--        單行文本-->
        <input type="text" v-model="msg">
        <p>{{msg}}</p>
        
<!--        多行文本-->
        <textarea v-model="textarea" cols="30" rows="10"></textarea>
        <P style="white-space: pre-line;" >{{textarea}}</P>

<!--        複選框-->
<!--        單個測試-->
        <input type="checkbox" v-model="isRead">
        <p>{{isRead}}</p>
<!--        多選興趣愛好-->
        籃球<input type="checkbox" value="籃球" v-model="favorites">
        足球<input type="checkbox" value="足球" v-model="favorites">
        乒乓球<input type="checkbox" value="乒乓球" v-model="favorites">
        <p>{{favorites}}</p>

<!--        單選框性別-->
        性別<input type="radio" value="" v-model="gender"><input type="radio" value="" v-model="gender"><p>{{gender}}</p>

<!--        選擇框-->
<!--        學歷-單選-->
        <select v-model="edu">
            <option value="本科">本科</option>
            <option value="碩士">碩士</option>
            <option value="博士">博士</option>
        </select>
        <p>{{edu}}</p>
<!--        補充上方愛好的-多選-->
        <select v-model="favorites" multiple>
            <option value="足球">足球</option>
            <option value="籃球">籃球</option>
            <option value="乒乓球">乒乓球</option>
        </select>
<!--        優化-->
        <select v-model="favorites" multiple>
            <option v-for="(f, index) in fs" v-bind:key="index" v-bind:value="f">{{f}}</option>
        </select>

<!--        值選擇-->
        <input type="checkbox" true-value="yes" false-value="no" v-model="toggle">
        <p>{{toggle}}</p>

<!--        單選框,返回值類似
            選擇框 value可以傳一個對象,但記得v-bind
-->

<!--        .lazy .number .trim修飾符,可以使修改事件觸發狀態【挪出光標點一下才能觸發】-->
        <input type="text" v-model.lazy="msg">
        <p>{{msg}}</p>


<!--        改進for的99乘法表-->
<!--        v-model修飾符控制數值【此時即使number類型也沒用】-->
<!--        <input type="number" v-model.number="num">-->
    </div>
    <script>
        var app = new Vue({
            el:'#app',
            data:{
                msg:'',
                textarea:'',
                isRead:false,
                favorites:[],
                gender:'',
                edu:'',
                fs:[
                    '足球',
                    '籃球',
                    '乒乓球'
                ],
                toggle:''
            }
        })
    </script>
</body>
</html>

組件基礎

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- 開發環境版本,包含了有幫助的命令行警告 -->
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
<!--&lt;!&ndash;    保證了組件的複用不會同時調用同一個變量,避免結果異常    &ndash;&gt;-->
        <bennyrhys></bennyrhys>
        <bennyrhys></bennyrhys>
        <hr>

<!--     向子組件傳遞數據 【定義的組件數據像元素屬性一樣賦值】  -->
        <bennyrhys title="組件1"></bennyrhys>
        <bennyrhys title="組件2"></bennyrhys>

<!--     傳遞了一個數組的數據給子組件 【注意此處引用data的變量,記得加:】 -->
        <mybolgs @sayhello="hello" v-for="(blog, index) in blogs" :title="blog.title" :date="blog.date" :author="blog.author" :key="index">
<!--        插槽佔位符-->
            <div style="color: red">bennyrhys</div>
        </mybolgs>

        <hr>
<!--    動態組件:傳組件名字動態切換    -->
        <component v-bind:is="currentTabComponent"></component>
    </div>
    <script>
        Vue.component('bennyrhys',{
            //返回值一定要是方法,避免變量被屬性同時公用造成異常
            data() {
                return {
                    counter: 0
                }
            },
            // 向子組件傳遞數據
            props:['title'],
            // 外層必須是一個整div包裹
            template:'<div><div>{{title}}</div><button @click="counter++" >hello {{counter}}</button></div>'
        })

        Vue.component('mybolgs',{
            // 傳遞了一個數組的組件
            props:['title', 'date', 'author'],
            template: '<div>' +
                    '<div>{{title}}</div>'+
                    // 插槽佔位符 可以起名字
                    '<slot></slot>'+
                    '<div>{{date}}--{{author}}</div>'+
                    // 監聽子組件的點擊事件,調用app的方法【大小寫不敏感的 不要用大寫】
                    // 使用組件拋出一個值傳參
                    '<button @click="$emit(\'sayhello\',title)">監聽子組件</button>'+
                '</div> '
        })
        var app = new Vue({
            el:'#app',
            data:{
                currentTabComponent: 'bennyrhys',
                message:"bennyrhys",
                blogs:[
                    {
                        'title':'Spring Boot1',
                        'date':'時間1',
                        'author':'bennyrhys'
                    },
                    {
                        'title':'Spring Boot2',
                        'date':'時間2',
                        'author':'bennyrhys'
                    },
                    {
                        'title':'Spring Boot3',
                        'date':'時間3',
                        'author':'瑞新'
                    }
                    ]
            },
            methods:{
                // 監聽子組件傳遞過來的方法
                hello(val){
                    console.log("hello zi"+val)
                }
            }
        })
    </script>
</body>
</html>

git提交-vue核心基礎完結

此處靜待,後期開源

彩蛋福利

爲了便於小夥伴們更好的學習Vue,防止視頻教程的鏈接失效,瑞新將最新的視頻教程放置公衆號【讓我遇見相似的靈魂】後臺回覆關鍵字領取。

關鍵字:Vue獲取

其他開源精品推薦:【建議收藏】hhh,star起來慢慢看
經典項目:點擊查看
競賽必刷:點擊查看
劍指面試:點擊查看

當然小夥伴如果覺得打字麻煩也可以掃描下方二維碼喲!
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章