• Vue.js入门教程(五)


    目录

    组件的全局注册

    组件的局部注册

    组件多级嵌套使用

    脚手架中的Vue组件

    组件之间传值

    1:父组件向子组件传值

    2:子组件向父组件传值

    方式一:回调函数的方式

    方式二:自定义事件  @绑定 的方式

    方式三:自定义事件 ref绑定 的方式

    自定义事件解绑

     3:任意组件之间传值

    Vue中的插槽

    简介

    默认插槽

    具名插槽

    作用域插槽

    Vue组件中的混用功能


    Vue的组件化编程

    组件的全局注册

    Vue.component("组件名称", {})        // 声明一个全局组件

    1. <body>
    2. <div id="app">
    3. <button-counter>button-counter>
    4. div>
    5. <script>
    6. // 声明一个全局组件
    7. Vue.component('button-counter', {
    8. data() { // 组件提供的data函数(为什么是data函数,不是data属性?因为属性的值被改变了,其他使用此属性的值都会被改变,而函数不会)
    9. return {count:0}
    10. },
    11. template: '',
    12. });
    13. new Vue({
    14. el: "#app"
    15. });
    16. script>
    17. body>

    组件的局部注册

    const c = Vue.extend({});               // 声明一个局部组件,返回组件对象

    1. <body>
    2. <div id="app">
    3. <c>c>
    4. div>
    5. <script>
    6. // 声明一个局部组件
    7. const c = Vue.extend({
    8. data() { // 组件提供的data函数(为什么是data函数,不是data属性?因为属性的值被改变了,其他使用此属性的值都会被改变,而函数不会)
    9. return { count: 0 }
    10. },
    11. template: '',
    12. });
    13. new Vue({
    14. el: "#app",
    15. components: { // 局部声明的组件,要在Vue实例里使用components块注册
    16. c: c // 属性名和属性值相同,可以简写成 c
    17. }
    18. });
    19. script>
    20. body>

    组件多级嵌套使用

    1. <body>
    2. <div id="app">
    3. <aa>aa>
    4. div>
    5. <script>
    6. // 二级组件
    7. const bb = Vue.extend({
    8. data() {
    9. return { name: '二级组件' }
    10. },
    11. template: '
      {{ name }}
      '
      ,
    12. });
    13. // 一级组件
    14. const aa = Vue.extend({
    15. data() {
    16. return { name: '一级组件' }
    17. },
    18. template: `
    19. {{ name }}
    20. `,
  • components: {
  • bb
  • }
  • });
  • new Vue({
  • el: "#app",
  • components: {
  • aa
  • }
  • });
  • script>
  • body>
  • 脚手架中的Vue组件

    脚手架中的Vue组件就是上面讲到的 局部组件 Vue.extend()。Vue.extend() 变成脚手架的方式就是把返回值变成了 export default 导出的方式,然后父组件 import 进行导入,template 属性被