成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

vue學(xué)習(xí)筆記(三)

zsirfs / 556人閱讀

摘要:直接創(chuàng)建組件使用標簽名組件模板,根據(jù)組件構(gòu)造器來創(chuàng)建組件。相應(yīng)的,實例也被稱為父組件。而且不允許子組件直接修改父組件中的數(shù)據(jù),強制修改會報錯。

一、組件 (一)什么是組件

組件(Component)是 Vue.js最強大的功能之一。組件可以擴展 HTML元素,封裝可重用的代碼組件是自定義元素(對象)。

(二)創(chuàng)建組件的兩種方式

官方推薦組件標簽名是使用-連接的組合詞,例如:。

1、使用構(gòu)造器創(chuàng)建組件

使用這種方式創(chuàng)建組件首先需要使用Vue.extend()創(chuàng)建一個組件構(gòu)造器,然后使用Vue.component(標簽名,組件構(gòu)造器),根據(jù)組件構(gòu)造器來創(chuàng)建組件。

//1.創(chuàng)建構(gòu)造器
var MyComponent=Vue.extend({
    template:"

Hello World

" }); //2.創(chuàng)建組件 Vue.component("my-hello",MyComponent); //3.使用組件

這種創(chuàng)建組件的方式比較麻煩,使用的較少。

2、直接創(chuàng)建組件

使用Vue.component(標簽名,組件模板),根據(jù)組件構(gòu)造器來創(chuàng)建組件。

//1.創(chuàng)建組件
 Vue.component("my-world", {
    template: "

hello vue.js

" }); //2.使用組件
(三)組件的分類

組件分為全局組件和局部組件。

1、全局組件

使用Vue.component()創(chuàng)建的組件都是全局組件。這樣的組件在任何組件內(nèi)都能使用。上面我們創(chuàng)建就是全局組件。

2、局部組件

局部組件一般都是定義在實例的選項中,稱為實例的子組件。相應(yīng)的,實例也被稱為父組件。

//1.定義組件
 new Vue({
    el: "#app",
    components: {
        dawei: {
            template: "

my name is dawei

" } } }); //2.使用組件
(四)引用模板

很多時候我們的template模板中需要存放很多標簽內(nèi)容,這樣的話寫起來會很麻煩。這時候我們可以使用template標簽。

用法如下:


    
    new Vue({
        el: "#app",
        components: {
            "my-dawei": {
                template: "#wbs",  //選擇template標簽
                data() {
                    return {
                        msg: "vue.js",
                        arr: ["a", "b", "c", "d"]
                    }
                }
            }
        }
    });

這里涉及到的幾個知識點得著重提一下:

template模板中,所有的元素必須放置在一個根元素中,要不然會報錯。例子中我們將元素放置在了

標簽中。

組件中的data選項必須是一個函數(shù)類型,使用return返回所有的數(shù)據(jù)。

(五)動態(tài)組件

很多時候項目中需要在某一個地方動態(tài)的使用不同的組件,這時候就需要使用動態(tài)組件。
動態(tài)組件的使用需要綁定is屬性:

簡單示例:

//點擊按鈕顯示不同的組件
 
//傳入flag
new Vue({ el: "#app", data: { flag: "my-a" //給flag賦值 }, components: { "my-a": { template: "

我是a組件

", }, "my-b": { template: "

我是b組件

" } } });
(六)keep-alive組件

使用keep-alive組件緩存非活動組件,可以保留狀態(tài),避免重新渲染,默認每次都會銷毀非活動組件并重新創(chuàng)建。

使用范例:


     


 
new Vue({ el: "#app", data: { flag: "my-x" }, components: { "my-x": { template: "

{{x}}

", data() { return { x: Math.random() } } }, "my-y": { template: "

{{y}}

", data() { return { y: Math.random() } } } } });

這樣的話,第一次產(chǎn)生的隨機數(shù)就會被緩存,再次切換的時候也不會發(fā)生改變。

二、 組件間數(shù)據(jù)傳遞 (一)父子組件

在一個組件內(nèi)部定義另一個組件,那么這對組件稱為父子組件。子組件只能在父組件內(nèi)部使用。默認情況下,每個組件實例的作用域是獨立的,子組件無法訪問父組件中的數(shù)據(jù),同樣,父組件也無法訪問子組件中的數(shù)據(jù)。

(二)組件間數(shù)據(jù)傳遞(通信) 1、子組件訪問父組件的數(shù)據(jù)

步驟:

a、調(diào)用子組件時,綁定想要獲取的父組件中的數(shù)據(jù)

b、在子組件內(nèi)部,使用props選項聲明獲取的數(shù)據(jù),即接收來自父組件的數(shù)據(jù)

改進上面的例子:

2、父組件訪問子組件的數(shù)據(jù)

步驟:

a 在子組件中使用vm.$emit(事件名,數(shù)據(jù))觸發(fā)一個自定義事件,將數(shù)據(jù)發(fā)送給父組件,事件名自定義

b 父組件在使用子組件的地方監(jiān)聽子組件觸發(fā)的事件,并在父組件中定義方法,用來獲取數(shù)據(jù)

//子組件‘my-b’內(nèi)部
methods:{
    send(){//使用$emit()觸發(fā)一個事件,發(fā)送數(shù)據(jù),this指當前子組件實例
        this.$emit("e-world", this.senddata);         
    }
}

//在調(diào)用子組件的地方監(jiān)聽子組件觸發(fā)的事件,調(diào)用自己的方法獲取數(shù)據(jù)
   


 methods: {
    getData(data) {  //參數(shù)是子組件傳遞過來的數(shù)據(jù)
        this.revicedata = data;
    }
 }
3、單向數(shù)據(jù)流

props是單向數(shù)據(jù)綁定的,當父組件數(shù)據(jù)發(fā)生變化時,將傳遞給子組件,但是不會反過來。而且不允許子組件直接修改父組件中的數(shù)據(jù),強制修改會報錯。

解決方案:

如果子組件想把它作為局部數(shù)據(jù)來使用,可以將數(shù)據(jù)存入另一個變量中再操作,不影響父組件中的數(shù)據(jù)

如果子組件想修改數(shù)據(jù)并且同步更新到父組件,兩個方法:

使用.sync顯式地觸發(fā)一個更新事件(1.0版本中支持,2.0版本中不支持,2.3版本又開始支持)

//使用.sync
  
 
//子組件修改父組件傳入的值name,觸發(fā)update更新事件
this.$emit("update:name", "vuejs"); 

可以將父組件中的數(shù)據(jù)包裝成對象,然后在子組件中修改對象的屬性(因為對象是引用類型,指向同一個內(nèi)存空間),推薦使用這種方式。

 data() {
    return { //將要傳遞的數(shù)據(jù)放入message對象中
        message: {
            hello: "子組件b你好,我是父組件a"
        }
    }
}

   //傳遞這個對象給子組件

 methods: {   //在子組件內(nèi)部修改這個值,這樣就會同步傳遞給父組件。
    edit() {
        this.message.hello = "hahahahh";
    }
 }
4. 非父子組件間的通信

非父子組件間的通信,可以通過一個空的Vue實例作為中央事件總線(事件中心),用它來觸發(fā)事件和監(jiān)聽事件,從而實現(xiàn)非父子組件間的通信。

var Event = new Vue();    //空vue實例

 methods: {  
    send() {  //觸發(fā)emit事件
        Event.$emit("hello", this.asmsg);
    }
 }
 
 mounted() {    //在子組件的鉤子函數(shù)中監(jiān)聽該事件
    Event.$on("hello", data => {   //獲取值
        this.bsmsg = data;  
    })
 }
三、slot內(nèi)容分發(fā)

用來獲取組件中的原內(nèi)容

var vm = new Vue({
    el: "#app",
    components: {
        "my-hello": {
            template: "#hello"
        }
    }
});

hello vue.js

如果組件標簽中沒有內(nèi)容就會顯示slot中的內(nèi)容,這也就是所謂的單個插槽。

還可以對顯示的內(nèi)容進行分組,這就是具名插槽,可以操作標簽組中的內(nèi)容:

  • aaa
  • bbb
  • ccc
  1. 111
  2. 222
  3. 333

這樣,就可以對組件中的內(nèi)容實時操作。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/51417.html

相關(guān)文章

  • Vue 筆記Vue2.0與1.0的區(qū)別

    摘要:升級的區(qū)別與的斷層式升級不同,延續(xù)了自己的風(fēng)格。在命名方式和上有一些區(qū)別,掌握它們是你升級整個項目的關(guān)鍵。以下內(nèi)容都是來源于個人項目的一些經(jīng)驗之談,并非系統(tǒng)性的闡述??偰夸浨岸私?jīng)驗收集器轉(zhuǎn)載自個人建了前端學(xué)習(xí)群,旨在一起學(xué)習(xí)前端。 升級的區(qū)別 與angular的斷層式升級不同,vue延續(xù)了自己的風(fēng)格。在命名方式和API上有一些區(qū)別,掌握它們是你升級整個項目的關(guān)鍵。以下內(nèi)容都是來源于個人...

    Big_fat_cat 評論0 收藏0
  • vue學(xué)習(xí)筆記

    摘要:直接創(chuàng)建組件使用標簽名組件模板,根據(jù)組件構(gòu)造器來創(chuàng)建組件。相應(yīng)的,實例也被稱為父組件。而且不允許子組件直接修改父組件中的數(shù)據(jù),強制修改會報錯。 一、組件 (一)什么是組件 組件(Component)是 Vue.js最強大的功能之一。組件可以擴展 HTML元素,封裝可重用的代碼組件是自定義元素(對象)。 (二)創(chuàng)建組件的兩種方式 官方推薦組件標簽名是使用-連接的組合詞,例如:。 1、使用...

    fsmStudy 評論0 收藏0
  • Vue.js學(xué)習(xí)系列二 —— vuex學(xué)習(xí)實踐筆記(附DEMO)

    摘要:有興趣的同學(xué)可以查看之前發(fā)布的文章學(xué)習(xí)系列一學(xué)習(xí)實踐筆記附學(xué)習(xí)系列二學(xué)習(xí)實踐筆記附學(xué)習(xí)系列三和網(wǎng)絡(luò)傳輸相關(guān)知識的學(xué)習(xí)實踐學(xué)習(xí)系列四打包工具的使用學(xué)習(xí)系列五從來聊聊學(xué)習(xí)系列項目地址項目暫時有點亂,之后會進行整理優(yōu)化。 上次學(xué)習(xí)了vue-router的使用,讓我能夠在各個頁面間切換,將頁面搭建了起來。這次則要學(xué)習(xí)vue的狀態(tài)管理模式——vuex。它類似于redux來應(yīng)用的全局狀態(tài)。 注:本...

    DobbyKim 評論0 收藏0
  • vue學(xué)習(xí)筆記(四)

    摘要:提供了兩種向組件傳遞參數(shù)的方式。子路由項路徑不要使用開頭,以開頭的嵌套路徑會被當作根路徑。路由實例的方法這里學(xué)習(xí)兩個路由實例的方法和。實際上,是通過不同的將這些資源加載后打包,然后輸出打包后文件。 一、vue-router 1、簡介 我們經(jīng)常使用vue開發(fā)單頁面應(yīng)用程序(SPA)。在開發(fā)SPA過程中,路由是必不可少的部分,vue的官方推薦是vue-router。單頁面應(yīng)用程序看起來好像...

    frank_fun 評論0 收藏0
  • vue學(xué)習(xí)筆記(四)

    摘要:提供了兩種向組件傳遞參數(shù)的方式。子路由項路徑不要使用開頭,以開頭的嵌套路徑會被當作根路徑。路由實例的方法這里學(xué)習(xí)兩個路由實例的方法和。實際上,是通過不同的將這些資源加載后打包,然后輸出打包后文件。 一、vue-router 1、簡介 我們經(jīng)常使用vue開發(fā)單頁面應(yīng)用程序(SPA)。在開發(fā)SPA過程中,路由是必不可少的部分,vue的官方推薦是vue-router。單頁面應(yīng)用程序看起來好像...

    lwx12525 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<