使用方法Vue.component(tag, constructor)
<hello></hello>
var hello = Vue.extend({
template:'<div>hello world</div>'
})
Vue.component('hello',hello);
var vm = new Vue({
el:"#app"
});
要先注册组件再创造实例
在父组件内注册子组件
var Child = Vue.extend({
template:'child'
});
var Parent = Vue.extend({
template: 'Parent <my-component></my-component>',
components: {
//<my-component> 只能用在父组件模板内
'my-component': Child
}
});
Vue.component('parent',Parent);
直接注册组件,语法糖形式
Vue.component('parent',{
template:'<div>Hello</div><child></child>',
components: {
'child': {
template:'<div>world</div>'
}
}
});
防止元素内部的自定义标签被提到元素的外面,导致渲染不正确。
<table>
<tr is="my-component"></tr>
</table>
先从属性传递到props,在从props取出来绑定到组件里
Vue.component('parent',{
template:'<span>Hello</span><child></child>{{msg}}',
props:['msg'], //此时获得的为字符串1
components:{
child:{
template:'<span>world</span>'
}
}
});
var vm = new Vue({
el:'#app'
})
<parent :msg = 1></parent><!--此时传递的是数字类型,并且可以获取data上的属性-->
父子组件不能通用属性 属性采用-线,props采用驼峰命名