template根问题和作用域插槽问题

38 阅读1分钟

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录


提示:以下是本篇文章正文内容,下面案例可供参考

一、template根问题?

为了让组件能够正常的生成一个vue实例,那么这个div会被自然的处理成程序的入口。

通过这个‘根节点’,来递归遍历整个vue‘树’下的所有节点,并处理为vdom,最后再渲染成真正的HTML,插入在正确的位置.

模板有且只有一个根!

在这里插入图片描述

二、作用域插槽

目的父类模板插槽,想要获得子组件的数据.并重新装饰

<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport"
        content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>

<script src="js/vue.js"></script>
<!--父类模板-->
<div id="app">
  <cpn></cpn>
  <cpn>
  <!--父类模板插槽,获得子组件的数据-->
    <template slot-scope="slot">
      <span v-for="item in slot.data">{{item}}-</span>
    </template>
  </cpn>
</div>
<!--子类模板-->
<template id="cpn">
  <div>
    <slot :data="person">
      <ul>
        <li v-for="item in person">{{item}}</li>
      </ul>
    </slot>
  </div>
</template>
<script>
  const app = new Vue({
    el: '#app',
    data: {
      message: 'Hello World!',
    },
    //注册cpn子组件
    components: {
      cpn: {
        template: `#cpn`,
        data() {
          return {
            person: ['海王', '海尔兄弟', '海神唐三', '海的女儿'],
          }
        },
      }
    }
  })
</script>
</body>
</html>

总结