Vue系列教程(15)- 事件内容分发($emit)

简介: Vue系列教程(15)- 事件内容分发($emit)

1. 引言

通过前面的章节,我们已经学会了使用插槽slot来做模块化开发,有兴趣的同学可以参阅下:

本文主要讲解Vue的事件内容分发,在讲解前,我们说说设计的思路。

2. 设计思路

先来看看事件内容分发的流程图:

看不懂没关系,下面来看实际的代码。

3. 案例

示例代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--引入js文件-->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.5.21/dist/vue.min.js"></script>
</head>
<body>
    <!--view层,模板-->
    <div id="app">
        <article>
            <aritcle-title slot="todo-title" v-bind:title="title"></aritcle-title>
            <aritcle-content slot="aritcle-content" v-for="(item,index) in contents" :item="item" :index="index"
                v-on:remove="removeItems(index)">
            </aritcle-content>
        </article>
    </div>
    <script type="text/javascript">
        Vue.component('aritcle', {
            template: '<div>\
                <slot name="aritcle-title"></slot>\
                <ul>\
                    <slot name="aritcle-content"></slot>\
                </ul>\
            </div>'
        });
        Vue.component('aritcle-title', {
            props: ['title'],
            template: '<div>{{title}}</div>'
        });
        //这里的index,就是数组的下标,使用for循环遍历的时候,可以循环出来!
        Vue.component("aritcle-content", {
            props: ["item", "index"],
            template: "<li>{{index+1}}、{{item}} <button @click='remove()'>删除</button></li> ",
            methods: {
                remove: function (index) {
                    this.$emit('remove', index);
                }
            }
        });
        var vm = new Vue({
            el: "#app",
            data: {
                title: "阿甘兄的博客",
                contents: ['Java', 'Python', 'Vue']
            },
            methods: {
                removeItems: function (index) {
                    console.log("删除了" + this.contents[index] + "OK");
                    this.contents.splice(index, 1);
                }
            }
        });
    </script>
</body>
</html>

运行结果如下:

运行结果 删除第1个 删除第2个 删除第3个

现在具体的实现,可以结合设计思路图来理解了。本文完!

目录
相关文章
|
28天前
|
资源调度 JavaScript 前端开发
创建vue3项目步骤以及安装第三方插件步骤【保姆级教程】
这是一篇关于创建Vue项目的详细指南,涵盖从环境搭建到项目部署的全过程。
136 1
|
4月前
|
JavaScript 开发者
|
4月前
|
JavaScript
vue3完整教程从入门到精通(新人必学2,搭建项目)
本文介绍了如何在Vue 3项目中安装并验证Element Plus UI框架,包括使用npm安装Element Plus、在main.js中引入并使用该框架,以及在App.vue中添加一个按钮组件来测试Element Plus是否成功安装。
145 0
vue3完整教程从入门到精通(新人必学2,搭建项目)
|
4月前
|
JavaScript Java CDN
vue3完整教程从入门到精通(新人必学1,vue3快速上手)
本文提供了Vue 3从入门到精通的完整教程,涵盖了创建Vue应用、通过CDN使用Vue、定义网站以及使用ES模块构建版本的步骤和示例代码。
1630 0
vue3完整教程从入门到精通(新人必学1,vue3快速上手)
|
5月前
|
JavaScript 前端开发
vue-day03 v-on事件处理,表单输入绑定
文章介绍了Vue.js中事件处理和表单输入绑定的使用。包括v-on指令监听事件、事件处理方法、内联处理器、访问原生DOM事件、事件修饰符、按键修饰符、系统修饰符、exact修饰符和鼠标按钮修饰符。同时,讲解了如何使用v-model实现单行文本、多行文本、复选框和单选按钮的双向数据绑定,并提供了修饰符的使用示例。这些特性使得Vue.js在处理表单输入和事件时更加灵活和方便。
vue-day03 v-on事件处理,表单输入绑定
|
4月前
|
JavaScript
Vue组件点击事件不触发的问题,添加事件修饰符native解决
Vue组件点击事件不触发的问题,添加事件修饰符native解决
534 0
|
5月前
|
JavaScript
Vue在子组件中判断父组件是否传来事件
本文介绍了在Vue中如何通过`vm.$listeners`对象来判断父组件是否传递了特定的事件给子组件,并展示了如何检查事件是否存在以及相应的处理方法。
288 0
Vue在子组件中判断父组件是否传来事件
|
5月前
|
JavaScript
vue学习(10)事件修饰符
vue学习(10)事件修饰符
54 3
|
4月前
|
资源调度 JavaScript PHP
Vue3+ element plus 前后分离admin项目安装教程
Vue3+ element plus 前后分离admin项目安装教程
120 0
|
5月前
|
JavaScript
vue学习(9)事件处理
vue学习(9)事件处理
66 2

热门文章

最新文章