demo
1 | var vm = new Vue({ |
自定义组件
全局组件
方法1:
1 | <body> |
方法2:1
2
3Vue.component('custom', {
template: '<h3>我是自定义模板</h3>'
})
局部组件
方法1:1
2
3
4
5
6
7
8
9
10var Custom = Vue.extend({
template: '<h3>我是自定义模板</h3>'
})
var vm = new Vue({
el: '#box',
components: {
custom: Custom
}
})
方法2:1
2
3
4
5
6
7
8new Vue({
el: '#box',
components: {
custom: {
template: '<h3>我是自定义模板</h3>'
}
}
})
讲模板中的html提取到外部
1 | <template id="custom"> |
动态组件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21<body>
<div id="box">
<component :is="custom"></component>
</div>
<script>
new Vue({
el: '#box',
data: {
custom: 'a'
},
components: {
a: {
template: '<h1>我是a</h1>'
},
b: {
template: '<h1>我是b</h1>'
}
}
})
</script>
</body>
调试工具
dev-tools
父->子组件数据传递
props
[‘msg’]
{
msg: String,
num: Number
}
1 | <body> |
子->父组件数据传递
$emit
: 发送
1 | <body> |
slot 槽口
匿名slot
1 | <body> |
命名slot
1 | <custom> |