Vue学习笔记-组件
1.创建一个组件
Vue.component('component',{
template:`<div>这是一个组件</div> `,//直接写html,只能有一个根元素,即例子中的div不能有兄弟元素
})
2. 组件具有自己独立的作用域,即外部不能访问组件内部的变量,组件内部不能访问外部的变量。
组件的data必须是函数,方法返回一个对象作为组件的data,看下例:
Vue.component('component',{
template:`<div>这是一个组件
<h1>{{message}}</h1>
</div> `,
data(){
return {
message:"组件内部data"
}
} //返回对象
})
3,以上创建的都是全局组件,局部组件创建方法如下
Vue.component('component',{
template:`<div>这是一个组件
<h1>{{message}}</h1>
<hello></hello> //调用局部组件
</div> `,
components: {
hello: {
template:`<div>hello</div>`,
}
},//局部组件只能当前组件中使用。
data(){
return {
message:"组件内部data"
}
} //返回对象
})
4.父子组件传递数据
父传子
/*在父文件中调用子组件,并加上要传递的数据属性如下*/
//父组件代码
<hello v-bind:data="todos"></hello> //hello为子组件,todos为你要传给子组件的数据,使用v-bind为动态绑定。
//子组件代码
Vue.component('hello', {
props: ['data'],
template: '<h3>{{ todos}}</h3>'
})
需要注意,在子组件中不能重新赋值父组件传递下来的数据,也就是父传子是单向的,这是为了防止子组件无意间更改父组件的状态。
虽然引用类型的数据可以修改,但是不建议使用。
子传父
/*子组件代码*/
在方法中写:
this.$emit('name',value); //name事件名称,value数据;
/*父组件代码*/
<hello v-on:name="method($event)"> </hello>
//hello子组件,name自定义事件名称,method父组件处理子组件传来的value数据的方法。
上述是传一个参数,传多个参数该如何处理
/*子组件代码*/
在方法中写:
this.$emit('name',value,value2,value3);
/*父组件代码*/
<hello v-on:name="method(arguments)"> </hello>
//可以打印出arguments,查看数据。

浙公网安备 33010602011771号