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个

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

目录
相关文章
|
3天前
|
JavaScript 前端开发 开发者
Vue的事件处理机制提供了灵活且强大的方式来响应用户的操作和组件间的通信
【5月更文挑战第16天】Vue事件处理包括v-on(@)指令用于绑定事件监听器,如示例中的按钮点击事件。事件修饰符如.stop和.prevent简化逻辑,如阻止表单默认提交。自定义事件允许组件间通信,子组件通过$emit触发事件,父组件用v-on监听并响应。理解这些机制有助于掌握Vue应用的事件控制。
17 4
|
4天前
|
JavaScript 编译器
Vue3之事件
Vue3之事件
8 0
|
4天前
|
XML 移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable定时捕获事件代码升级修改
ruoyi-nbcio-plus基于vue3的flowable定时捕获事件代码升级修改
12 0
|
4天前
|
移动开发 前端开发
ruoyi-nbcio-plus基于vue3的flowable定时边界事件代码升级修改(三)
ruoyi-nbcio-plus基于vue3的flowable定时边界事件代码升级修改(三)
|
4天前
|
JavaScript
Vue3的 组件事件
Vue3的 组件事件
18 0
|
4天前
|
资源调度 JavaScript 前端开发
【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程
【vue】vue中的路由vue-router,vue-cli脚手架详细使用教程
|
4天前
|
JavaScript 前端开发
vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程
这是一个Vue.js组件代码示例,展示了带有侧边栏导航和面包屑导航的布局。模板中使用Element Plus组件库,包含可折叠的侧边栏,其中左侧有 Logo 和导航列表,右侧显示更具体的子菜单。`asideDisplay`控制侧边栏宽度。在`script`部分,使用Vue的响应式数据和生命周期钩子初始化路由相关数据,并从localStorage恢复状态。样式部分定义了组件的颜色、尺寸和布局。
23 1
|
4天前
|
JavaScript 前端开发 开发者
事件处理:深入理解Vue的事件机制
【4月更文挑战第23天】Vue.js的事件处理机制是其核心特性之一,允许开发者响应用户操作。通过`v-on`(或简写`@`)指令绑定DOM事件到方法,当事件触发时执行相应代码。事件修饰符如`.stop`、`.prevent`等简化了常见逻辑。此外,Vue支持自定义事件,便于组件间通信,如子组件通过`$emit`触发事件,父组件使用`v-on`监听并处理。理解这些概念能帮助开发者更有效地控制Vue应用的事件流程。
|
4天前
Vue3系列教程之插槽slot详解
Vue3系列教程之插槽slot详解
13 0
|
4天前
|
JavaScript
vue 组件事件
vue 组件事件

相关实验场景

更多