目录
自定义事件的监听和触发
内容分发
1、基础用法:
2、后备内容:
3、具名插槽:
4、作用域插槽
混入
1、基础用法:
2、选项合并:
3、全局混入
动态组件
1、基础用法:
2、keep-alive
父组件通过使用prop为子组件传递数据,但如果子组件要把数据传递回去,就需要自定义事件来实现。
自定义事件的监听和触发
父组件可以像处理DOM事件一样通过v-on监听子组件实例的自定义事件,而子组件可以通过调用内建的$emit() 方法并传入事件名称来触发自定义事件。$emit()方法的语法格式如下:
$emit(eventName,[...args])
参数说明:eventName:传入事件的名称;[...args]:触发事件传递的参数,该参数是可选的
在页面中定义一个按钮和一行文本,实现文本放大的功能示例:
将原生事件绑定到组件,如果想在某个组件的根元素上监听一个原生事件,可以用v-on的.native修饰符:
内容分发
在实际开发中,子组件往往只提供基本的交互功能,而内容是由父组件提供。为此Vue.js提供了一种混合父组件内容和子组件模板的方式,这种方式称为内容分发。
Vue.js参照当前Web Components模范草案实现了一套内容分发的API,使用
{{message}}
有时候需要为一个插槽设置具体的后备,也就是默认的内容,该内容只会在没有提供内容的时候被渲染。实例如下:
有时候需要在组件模板中使用多个插槽,这种情况需要用到
{{title}}
{{content}}
有些时候需要让插槽内容能够访问子组件中才有的数据,为了让子组件中的数据在父级的插槽内容中可用,可以将子组件中的数据作为一个
{{ikunProps.ikunData}}
混入
混入是一种为组件提供可复用功能的非常灵活的方式。混入对象可以包含任意的组件选项,当组件使用混入对象时,混入 对象中的所有选项将被所有选项将被混入到该组件本身的选项中。示例如下:
当组件和混入对象包含同名选项时,这些选项将以适当的方式进行合并。例如,数据对象在内部会进行递归合并,在和组件的数据发生冲突时以数组数据优先,同名钩子函数将混合为一个数组,因此都会调用,示例如下;
值为对象的选项,例如methods、components和directives,将会被合并为一个对象。如果两个对象的键名冲突,则取组件对象的键值对,示例如下:
混入对象也可以全局注册,但需要小心使用。一旦使用全局混入对象,它就会影响到所有之后创建的Vue实例,全局注册一个混入对象使用的方法是Vue.mixin()
动态组件
在使用动态组件时,多个组件使用同一挂载点,根据条件在不同组件之间进行动态切换。通过使用Vue.js中的
- 唱
- 跳
- rap
- 篮球
在多个组件之间进行切换的时候,有时需要保持这些组件的状态,将切换后的状态保留在内存中,以避免重复渲染,为了解决这个问题,可以使用一个
- 唱
- 跳
- rap
- 篮球
如上,当点击“唱”选项的“喂喂喂”之后,再点击“跳”选项,再点回“唱”选项时,选项栏会自动显示上一次点击的选项栏