Vue事件分发

Vue事件分发

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>slot插槽&事件分发</title>
</head>
<body>

<!--定义好盒子内容-->
<div id="slot">
    <!--  指定插入位置slot="one"
          v-bind绑定props元素给props元素属性赋值
          再将已经有值的组件插入指定slot插槽
          (我认为slot就是一个占位符~)
     -->
    <slott>
        <!--  slot绑定<slot>里边定义好的name值 指定要插入的位置 -->
        <one1 slot="one" v-bind:slot1="message"></one1>
        <two2 slot="two" v-for="(item,index) in Items" :slot2="item" :index="index" v-on:remove1="remove(index)"></two2>
    </slott>
</div>

<!--导入组件-->
<script src="https://lib.baomitu.com/vue/2.6.14/vue.common.dev.js"></script>

<script>
    //定义插槽
    Vue.component("slott",{
        template: '<div>' +
            '<slot name="one"></slot>' +   //定义插槽 name属性为one
            '<ul>' +
            '<slot name="two"></slot>' +   //定义插槽 name属性为two
            '</ul>' +
            '</div>'
    });
    //定义第一个要插入的组件one1
       Vue.component("one1",{
            props:["slot1"],
            template: '<p>' +
                '{{slot1}}' +
                '</p>'
        });
    //定义第二个要插入的组件two2
    Vue.component("two2",{
        props:["slot2","index"],
        template: '<li>' +
            '{{index}}---{{slot2}}' +
            '<button @click="remove1()">删除</button>' +     //设置删除按钮 v-on事件绑定
            '</li>',
        methods:{
            remove1:function (){
                //this.$emit(自定义事件名,参数)
                this.$emit('remove1',index)
            }
        }
    })

    //定义Vue对象
    var vm = new Vue({
        el:"#slot",
        data:{
            message:"nihao",
            Items:['张三','李四','王五']
        },
        methods:{
            remove:function (index){
                console.log(index)
                this.Items.splice(index,1)
            }
        }
    })
</script>
</body>
</html>

我理解的自定义分发事件就是在组件里用 this.$emit(自定义事件名,参数) 在组件里定义一个事件,然后用这个事件调用Vue实例里的方法,来实现在组件作用域办不了的事。
这章感觉狂老师讲的优点乱,里边很多的index其实都是可以删除的,具体原因好像是因为v-for循环遍历的时候index已经被Vue实例里的方法给读取了,所以有些index可有可无。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值