Vue 中的作用域插槽

栏目: JavaScript · 发布时间: 7年前

内容简介:上面代码,如果此时有个需:

作用域插槽

<div id="root">
    <child></child>
</div>
Vue.component('child', {
    data(){
        return {
            list:[1,2,3,4]
        }
    },
    template: `<div>
                <ul>
                    <li v-for="item of list">{{item}}</li>
                </ul>
              </div>`,
})
let vm = new Vue({
    el: '#root'
})

上面代码,如果此时有个需: child 组件在很多地方会被调用,我希望在不同的地方调用 child 的组件时,这个列表到底怎么循环,列表的样式不是 child 组件控制的,而是外部 child 模版站位符告诉我们组件的每一项该如何渲染,也就是说这里不用 li 标签,而是要用 slot 标签。

<div id="root">
    <child>
        <template slot-scope="props">       //固定写法,属性值可以自定义
            <li>{{props.item}}</li>         //用插值表达式就可以直接使用
        </template>    
    </child>
</div>
Vue.component('child', {
    data(){
        return {
            list:[1,2,3,4]
        }
    },
    template: `<div>
                <ul>
                    <slot v-for="item of list" :item=item></slot>
                </ul>
              </div>`,
})
let vm = new Vue({
    el: '#root'
})

<slot v-for="item of list" :item=item></slot> 这段代码的意思是 child 组件去做一个列表的循环,但是列表项中的每一项怎么显示,我并不关心,具体怎么显示,外部你来告诉我.

<template slot-scope="props"></template> 这是一个固定写法,属性值可以自定义。它的意思是当子组件用 slot 时,会往子组件里传递一个 item ,从子组件接收的数据都放在了 props 上。

什么时候使用作用域插槽呢?当子组件循环或某一部分的 dom 结构应该由外部传递进来的时候,我们要用作用域插槽,使用作用域插槽,子组件可以向父组件的作用域插槽里传递数据,父组件如果想接收这个数据,必须在外层使用 template 模版占位符,同时通过 slot-scope 对应的属性名字,来接收你传递过来的数据,上面代码,传递一个一个 item 过来,在父组件的作用域插槽里面,就可以接收到这个 item ,就可以使用它了。


以上所述就是小编给大家介绍的《Vue 中的作用域插槽》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

怪诞行为学2

怪诞行为学2

[美]丹·艾瑞里 / 赵德亮 / 中信出版社 / 2010-1-9 / 42.00元

《怪诞行为学2:非理性的积极力量》编辑推荐:尝试用“非理性”的决策方式,彻底颠覆工作和生活中的“逻辑”,你将获得意想不到的成就感与幸福感!畅销书《怪诞行为学》作者卷土重来,掀起新一轮“非理性”狂潮。 《写给中国人的经济学》作者王福重、著名行为经济学家董志勇倾情作序。 诺贝尔经济学奖得主阿克尔洛夫、《免费》作者安德森高度评价。 《纽约时报》《哈佛商业评论》《波士顿环球报》等全球顶级......一起来看看 《怪诞行为学2》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具