zoukankan      html  css  js  c++  java
  • 在vue中使用插槽 slot

    插槽(slot)这个概念非常重要
    插槽的使用场景1:在子组件里面显示父组件的dom
    <div id='root'>
      <child content = '<p>Dell</p>'></child>
    </div>
    
    <script>
    Vue.component('child',{
      props:['content'],
      template:`
        <div>
          <p>hello</p>
          <div v-html='this.content'></div>
        </div>
      `
    })
    var vm = new Vue({
      el:'#root'
    })
    </script>
    发现这样,能显示出来,但外层必须要包裹一层div,无法直接显示p,而且当内容比较多的时候,会比较难看,
    这个时候就用到vue里面新到语法,slot
    <div id='root'>
      <child>
        <h1>dell</h1>
      </child>
    </div>
    
    <script>
    Vue.component('child',{
      template:`
        <div>
          <p>hello</p>
          <slot></slot>
        </div>
      `
    })
    var vm = new Vue({
      el:'#root'
    })
    </script>

    像这样,父组件里面直接写dom元素,通过slot引用,在子组件插入点内容,叫做插槽



    slot特性
    1、默认内容
    Vue.component('child',{
      template:`
        <div>
          <p>hello</p>
          <slot>默认内容</slot>
        </div>
      `
    })
    如果父没传dom过来,slot会显示默认内容
    2、当有多个slot的时候
    <div id='root'>
      <body-content>
        <div class="header">header</div>
        <div class="footer">footer</div>
      </body-content>
    </div>
    
    
    <script>
    Vue.component('body-content',{
      template:`
        <div>
          <slot></slot>
          <div>content</div>
          <slot></slot>
        </div>
      `
    })
    var vm = new Vue({
      el:'#root'
    })
    </script>
    像这样,肯定不对,页面会出现两个header,footer ,那怎么做,给slot取个名字,具名插槽
    <div id='root'>
      <body-content>
        <div class="header" slot='header'>header</div>
        <div class="footer" slot='footer'>footer</div>
      </body-content>
    </div>
    
    
    <script>
    Vue.component('body-content',{
      template:`
        <div>
          <slot name='header'></slot>
          <div>content</div>
          <slot name='footer'></slot>
        </div>
      `
    })
    var vm = new Vue({
      el:'#root'
    })
    </script>
    这样就可以,父组件中定义两个插槽,子组件进行相应的引用
  • 相关阅读:
    笔记本无线网卡和有线网卡同时用及网络知识回顾总结
    DSPack初次使用小结
    常见加解密算法及Delphi应用程序图标总结
    Delphi窗体创建释放过程及单元文件小结
    怪异的JavaScript的Case语句
    交换机与路由器的区别
    DirectShow学习笔记总结
    Git的提交与查看差异
    Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
    laravel5的Bcrypt加密方式对系统保存密码的小结
  • 原文地址:https://www.cnblogs.com/wzndkj/p/9666864.html
Copyright © 2011-2022 走看看