Vue基础-作用域插槽-列表组件

Vue 测试版本:Vue.js v2.5.13

Vue 官网介绍作用域插槽时,

在 2.5.0+,slot-scope 能被用在任意元素或组件中而不再局限于 <template>

作用域插槽更典型的用例是在列表组件中,允许使用者自定义如何渲染列表的每一项:

例子:

<my-awesome-list :items="items">
  <!-- 作用域插槽也可以是具名的 -->
  <li
    slot="item"
    slot-scope="props"
    class="my-fancy-item">
    {{ props.text }}
  </li>
</my-awesome-list>

列表组件的模板:

<ul>
  <slot name="item"
    v-for="item in items"
    :text="item.text">
    <!-- 这里写入备用内容 -->
  </slot>
</ul>

其实到这里,我自己倒腾了下,一开始没有弄出来,后来理了理思绪才弄出来,完整代码是这样:

<parent-component v-bind:items="items"></parent-component>
window.onload = function() {

    Vue.component('parent-component', {
        template: `
     <my-awesome-list :items="items">
     <!-- 作用域插槽也可以是具名的 -->
        <li
          slot="item"
          slot-scope="props"
          >
          {{ props.text }}
        </li>
      </my-awesome-list>
       `,
        props: ['items']
    });

    Vue.component('my-awesome-list', {
        template: `
        <ul>
          <slot name="item"
            v-for="item in items"
            :text="item.text">
            <!-- 这里写入备用内容 -->
          </slot>
        </ul>
        `,
        props: ['items']
    });

    new Vue({
        el: '#app',
        data: {
            items: [
                { text: '111' },
                { text: '222' },
                { text: '333' }
            ]
        }
    });
};

当然,也可以这样:

<my-awesome-list :items="items">
            <!-- 作用域插槽也可以是具名的 -->
            <li slot="item" slot-scope="props">
                {{ props.text }}
            </li>
</my-awesome-list>
window.onload = function() {

    Vue.component('my-awesome-list', {
        template: `
        <ul>
          <slot name="item"
            v-for="item in items"
            :text="item.text">
            <!-- 这里写入备用内容 -->
          </slot>
        </ul>
        `,
        props:['items']
    });

    new Vue({
        el: '#app',
        data: {
            items: [
                { text: '111' },
                { text: '222' },
                { text: '333' }
            ]
        }
    });
};

参考文档:

https://cn.vuejs.org/v2/guide/components.html#作用域插槽

转载于:https://www.cnblogs.com/xianshenglu/p/8469478.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值