目录
二、例子
三、父子组件
一、组件与实例的关系
每一个Vue的组件都是vue的实例。
任何一个Vue项目都是有千千万万的Vue实例组成的。
二、例子
怎样判断是一个vue实例,可以把前章的例子修改一下,添加一些方法和事件
运行效果,填写一个a 提交,点单击一下a看一下
三、父子组件
在上面的例子中,我们创建一个最外层的实例,在这个实例里我们又创建了一个小的全局todo-item小组件。
在外部包含在内部组件的情况下,外部的叫父组件,里面的小组件我们称为子组件。
3.1 父向子传值
在Vue之中,父组件向子组件传值是通过属性的形式进行的,主要是prop,在vue实例中使用 props 关键词。这样就可以变成此组件的一个属性了。
3.1.1 使用props选项传值
使用v-bind命令“:”,这样可以把父组件的数据传给它。上面例子也有说明了。
子组件的props选项能够接收来自父组件数据。没错,仅仅只能接收,props是单向绑定的,即只能父组件向子组件传递,不能反向。分静态和动态
3.1.2 使用$ref
可以见vue导读的$ref
- 如果ref用在子组件上,指向的是组件实例,可以理解为对子组件的索引,通过$ref可能获取到在子组件里定义的属性和方法。
- 如果ref在普通的 DOM 元素上使用,引用指向的就是 DOM 元素,通过$ref可能获取到该DOM 的属性集合,轻松访问到DOM元素,作用与JQ选择器类似。
这里再补充一点就是,prop和$ref之间的区别:
- prop 着重于数据的传递,它并不能调用子组件里的属性和方法。像创建文章组件时,自定义标题和内容这样的使用场景,最适合使用prop。
- $ref 着重于索引,主要用来调用子组件里的属性和方法,其实并不擅长数据传递。而且ref用在dom元素的时候,能使到选择器的作用,这个功能比作为索引更常有用到。
例子我这里就不说了,可以看"vue $ref的基本用法"
3.2 子向父传值$emit
父组件是使用 props 传递数据给子组件,但如果子组件要把数据传递回去,就需要使用自定义事件!
我们可以使用 v-on 绑定自定义事件, 每个 Vue 实例都实现了事件接口(Events interface),即:
- 使用
$on(eventName)
监听事件 - 使用
$emit(eventName)
触发事件
另外,父组件可以在使用子组件的地方直接用 v-on 来监听子组件触发的事件。
$emit 绑定一个自定义事件event,当这个这个语句被执行到的时候,就会将参数arg传递给父组件,父组件通过@event监听并接收参数。
例子将在下章数据删除功能实现讲解。