Vue 自定義元件

2021-09-02 01:48:46 字數 1899 閱讀 5762

元件(component) 是 vue.js 最強大的功能之一。元件可以擴充套件 html 元素,封裝可重用的**。在較高層面上,元件是自定義元素,vue.js 的編譯器為它新增特殊功能。在有些情況下,元件也可以表現為用is 特性進行了擴充套件的原生 html 元素。所有的 vue 元件同時也都是 vue 的例項,所以可接受相同的選項物件 (除了一些根級特有的選項) 並提供相同的生命週期鉤子。

註冊全域性元件:可以使用可以使用vue.component(tagname, options)

1 vue.component('my-component', )
元件在註冊之後,便可以作為自定義元素  在乙個例項的模板中使用。注意確保在初始化根例項之前註冊元件:

1 2   

3

測試例項:

1 

2 311

12 13

1424

25

你不必把每個元件都註冊到全域性。你可以通過某個 vue 例項/元件的例項選項 components註冊僅在其作用域中可用的元件: 

1 var child = new vue(})
例子2:

1 

2 311

12 13

1428

29

當使用 dom 作為模板時 (例如,使用 el 選項來把 vue 例項掛載到乙個已有內容的元素上),你會受到 html 本身的一些限制,因為 vue 只有在瀏覽器解析、規範化模板之後才能獲取其內容。尤其要注意,像ul、ol、select、table這樣的元素裡包含的元素有限制,而另一些像option的元素只能出現在某些特定元素的內部,在自定義組建中使用這些受限制的元素,容易導致一些問題。

1 2   ...

3

25

26 但是用is特殊屬性可以:

1 

2 312

13

14

1525

26

或者temp模板標籤也可以: 

5

6 7

811

12 13

或者內聯模板字串也行 

4

5

6' } } })

data必須是函式 構造 vue 例項時傳入的各種選項大多數都可以在元件裡使用。只有乙個例外:data 必須是函式。實際上,如果你這麼做: 

1vue.component('my-component', }',  

3   data:   

6 })

1 

2 38 9 10

11

12

13 14

1527

28

由於這三個元件例項共享了同乙個 data 物件,因此遞增乙個 counter 會影響所有元件!這就錯了。我們可以通過為每個元件返回全新的資料物件來修復這個問題:

1 data: function () 

5 }

1 

2 38 9 10

11

12

13 14

1529

30

Vue 自定義元件

元件 component 是vue.js 最強大的功能。元件可以封裝可重用的 通過傳入物件的不同,實現元件的復用,但元件傳值就成為乙個需要解決的問題。父元件向子元件傳值 元件例項的作用域是孤立的。這意味著不能在子元件的模板內直接引用父元件的資料。要讓子元件使用父元件的資料,我們需要通過子元件的 pr...

vue 元件自定義

基於iview的自定義table元件 一 業務要求 1.展示列表字段資訊.2.列表資料的增刪查改 與 匯出 3.列表的分頁功能 二 元件 實現 html ref table data arrlist columns currcolumns loading loading no data text 暫...

vue自定義元件

自定義指令 以v開頭,如 v mybind。示例 directives 這時頁面初始化時,input中會顯示this is mybind bind。通過directives註冊自定義指令mybind,每乙個自定義指令中又提供若干鉤子,如示例中的bind,bind的作用是定義乙個在繫結時執行一次的初始...