Vue组件(sync语法糖)
注册的组件里面包含了所有内容:数据(一定是函数,使用函数会形成闭包环境,保证了每一个组件拥有独立得数据),模板,方法
组件注册注意事项
1 data必须是一个函数
2 组件模板内容必须有单个根元素
3 组件模板内容可以是模板字符串
注意:如果采用驼峰命名,只能在字符串中使用驼峰样式的名字,如果在普通模板中只能转化为短横线的方式,如下图:
局部注册的东西只能在注册他的父组件中使用,其他地方不行
子组件通过props: [ ] 接收
子组件:
完整演示
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="vue.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css">
</style>
</head>
<body>
<div id="app">
<zu-jian title='静态传值' :name='msg'></zu-jian>
</div>
</body>
<script type="text/javascript">
Vue.component('zu-jian', {
props: ['title', 'name'],
template:`
<div>
{{title}}----
{{name}}
</div>
`
})
var vm = new Vue({
el: '#app',
data: {
msg: '动态传值'
}
})
</script>
</html>
props类型为数值与布尔时,如果不加不用v-bind(也就是不加:)做绑定,得到的都是字符串。
最终模板会显示:
现在要求对子组件的第二个li显示为蓝色。这时就用到了作用域插槽。
通过slot传值,父组件通过template中的slot-scope接收。这下面的{{item.name}}可删可不删。