zoukankan      html  css  js  c++  java
  • vue插槽的使用

    一、插槽的基本使用

    二、具名插槽的使用

    三、编译作用域的例子

    四、作用域插槽

    一、插槽的基本使用

        1.插槽的基本使用<slot></slot>
        2.插槽的默认值<slot>button</slot>
        3.如有多个值,同时放入到组件进行替换时,一起作为替换元素
    <div id="app">
        <h1>我是父组件</h1>
        <cpn><button>按钮</button></cpn>
        <cpn><span>span标签</span></cpn>
        <cpn><input type="text"></cpn>
        <cpn>
          <i>我这有这么多</i>
          <span>wo</span>
          <button>666</button>
        </cpn>
        <cpn></cpn>
      </div>
      <template id="templ">
        <div>
          <h2>我是组件</h2>
          <p>我是组件啊啊啊啊啊</p>
          <slot><button>我是默认值</button></slot><!--插槽的默认值-->
        </div>
      </template>
      <script src="/js/vue.js"></script>
      <script>
        const vm = new Vue({
          el:'#app',
          data:{},
          components:{
            cpn:{
              template:"#templ"
            }
          }
        });
      </script>
    插槽的基本使用

    二、具名插槽的使用

    <!--导航栏效果 分为左中右-->
      <div id="app">
        <!-- 替换中间的 -->
        <cpn><input type="text" placeholder="搜索" slot="center"></cpn>
        <!-- 替换左边的 -->
        <cpn><button slot="left">返回</button></cpn>
        <!-- 替换右边的 -->
        <cpn><button slot="right">前进</button></cpn slot="right">
      </div>
    
      <template id="templ">
        <div>
          <slot name = "left"><span>左边</span></slot>
          <slot name = "center"><span>中间</span></slot>
          <slot name="right"><span>我是默认值</span></slot><!--插槽的默认值-->
        </div>
      </template>
    具名插槽

    上面的方法是旧的,已弃用。

    三、编译作用域的例子

    <div id="app">
        <cpn v-show="isShow"></cpn>
      </div>
    
      <template id="templ">
        <div>
          <h2>我是子组件</h2>
          <p>我是组件啊啊啊啊啊</p>
          <button v-show="isShow">我用的是组件里的data</button>
        </div>
      </template>
    <!-- 不关心你用的是哪个组件,看你是在哪个模板 -->
      <script src="/js/vue.js"></script>
      <script>
        const vm = new Vue({
          el:'#app',
          data:{
            isShow:true//模板里是按照这个来的。
          },
          components:{
            cpn:{
              template:"#templ",
              data(){
                return{
                  isShow:false//子组件中是使用这个值
                }
              }
            }
          }
        });
    什么是编译作用域

    四、作用域插槽

     <div id="app">
        <cpn></cpn>
        <!-- 父组件在展示时希望中间以其他形式分割 -->
        <!-- 目的:获取子组件中的lang 
        vue2.5.x以下要用<template></template>模板-->
        <cpn>
          <template slot-scope="slot">
            <span v-for="items in slot.data">{{items}}-</span>
          </template>
        </cpn>
        <cpn>
          <template slot-scope="slot">
            <span>{{slot.data.join(' * ')}}</span>
          </template>
        </cpn>
      </div>
    
      <template id="templ">
        <div>
          <slot :data="lang">
            <ul>
              <li v-for="items in lang">{{items}}</li>
            </ul>
          </slot>
        </div>
      </template>
      <!-- 父组件替换插槽的标签,内容由子组件来提供 -->
      <script src="/js/vue.js"></script>
      <script>
        const vm = new Vue({
          el:'#app',
          data:{
          },
          components:{
            cpn:{
              template:"#templ",
              data(){
                return{
                  lang:['JavaScript','C++','Python','Java','Go']
                }
              },
              created(){
                // this.lang.join(' - ');
              }
            }
          }
        });
     </script>
        
    作用域插槽

    上面的方法是旧的,已弃用。

  • 相关阅读:
    FileZilla相关配置说明
    pod install速度慢,pod repo update 速度慢解决方法
    Vue安装
    mac 远程桌面连接
    .NET MVC 支付宝支付(即时到账)
    windows下生成ssl
    gentelella 开源后台使用记录
    node、npm、gulp安装
    武汉在院新冠肺炎患者清零
    致最可爱的战疫人
  • 原文地址:https://www.cnblogs.com/sweetC/p/12160913.html
Copyright © 2011-2022 走看看