83 lines
1.4 KiB
Markdown
83 lines
1.4 KiB
Markdown
|
# 组件
|
|||
|
|
|||
|
组件是带有一个名字的可复用的vue实例,可以在new Vue创建的vue根实例中把定义的组件当做自定义元素来使用
|
|||
|
|
|||
|
### 组件构成
|
|||
|
|
|||
|
组件和new Vue接收的选项相同,都包括如下部分
|
|||
|
|
|||
|
- data
|
|||
|
|
|||
|
- methods
|
|||
|
|
|||
|
- computed
|
|||
|
|
|||
|
- watch
|
|||
|
|
|||
|
- components 组件内可以调用其他组件
|
|||
|
|
|||
|
> el 是根实例特有的选项,组建中不能出现el选项
|
|||
|
|
|||
|
|
|||
|
|
|||
|
### 组件定义和使用:
|
|||
|
|
|||
|
#### 定义一个组件
|
|||
|
|
|||
|
需要把组件实例赋给一个变量
|
|||
|
|
|||
|
```
|
|||
|
let counter=Vue.component('counter', {
|
|||
|
data: function () {
|
|||
|
return {
|
|||
|
count: 0
|
|||
|
}
|
|||
|
},
|
|||
|
methods:{
|
|||
|
add(){
|
|||
|
this.count+=1
|
|||
|
}
|
|||
|
},
|
|||
|
template: '<button v-on:click="add">You clicked me {{ count }} times.</button>'
|
|||
|
})
|
|||
|
```
|
|||
|
|
|||
|
> 声明组件中,组件内部的data必须是一个函数
|
|||
|
>
|
|||
|
> 因此 ,每个组件实例都是彼此独立的
|
|||
|
|
|||
|
使用它:
|
|||
|
|
|||
|
js部分:
|
|||
|
|
|||
|
```
|
|||
|
var app = new Vue({
|
|||
|
el: '#app',
|
|||
|
data: {
|
|||
|
selected: []
|
|||
|
},
|
|||
|
component:{
|
|||
|
counter
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
})
|
|||
|
```
|
|||
|
|
|||
|
template (html)部分
|
|||
|
|
|||
|
```
|
|||
|
<div id="app">
|
|||
|
<counter></counter>
|
|||
|
<counter></counter>
|
|||
|
<counter></counter>
|
|||
|
<counter></counter>
|
|||
|
|
|||
|
</div>
|
|||
|
```
|
|||
|
|
|||
|
> 组件可以使用任意次数
|
|||
|
>
|
|||
|
> 这个例子中,id=app的部分叫做 父组件 counter指代的部分叫做 子组件
|
|||
|
|