美文网首页
vue组件插槽-作用域插槽

vue组件插槽-作用域插槽

作者: 王玉伟的伟 | 来源:发表于2019-11-24 12:15 被阅读0次
    • 父组件对子组件加工处理
    • 既可以复用子组件的slot,又可以使slot内容不一致
      <div id="app">
        <!-- 
            1、当我们希望li 的样式由外部使用组件的地方定义,因为可能有多种地方要使用该组件,
            但样式希望不一样 这个时候我们需要使用作用域插槽 
            
        -->  
        <fruit-list :list='list'>
           <!-- 2、 父组件中使用了<template>元素,而且包含scope="slotProps",
                slotProps在这里只是临时变量   
            --->    
          <template slot-scope='slotProps'>
            <strong v-if='slotProps.info.id==3' class="current">
                {{slotProps.info.name}}              
             </strong>
            <span v-else>{{slotProps.info.name}}</span>
          </template>
        </fruit-list>
      </div>
      <script type="text/javascript" src="js/vue.js"></script>
      <script type="text/javascript">
        /*
          作用域插槽
        */
        Vue.component('fruit-list', {
          props: ['list'],
          template: `
            <div>
              <li :key='item.id' v-for='item in list'>
                ###  3、 在子组件模板中,<slot>元素上有一个类似props传递数据给组件的写法msg="xxx",
                ###   插槽可以提供一个默认内容,如果如果父组件没有为这个插槽提供了内容,会显示默认的内容。
                        如果父组件为这个插槽提供了内容,则默认的内容会被替换掉
                <slot :info='item'>{{item.name}}</slot>
              </li>
            </div>
          `
        });
        var vm = new Vue({
          el: '#app',
          data: {
            list: [{
              id: 1,
              name: 'apple'
            },{
              id: 2,
              name: 'orange'
            },{
              id: 3,
              name: 'banana'
            }]
          }
        });
      </script>
    </body>
    </html>
    
    

    相关文章

      网友评论

          本文标题:vue组件插槽-作用域插槽

          本文链接:https://www.haomeiwen.com/subject/ulrkwctx.html