【Vue】03 Slot 插槽 & 自定义事件
顾名思义就是一个槽,可以嵌入各种各样的东西
Vue的插槽就是一个slot标签,可以在这个定义了插槽的组件中插入其他的组件
但是有一点很重要:使用插槽的组件必须要用div标签一个根标签包裹,否则无效
<div id="container-element" > <book>
<aaa slot="aaa" v-bind:ta="head_title"></aaa>
<bbb slot="aaa" v-for="item in items" v-bind:tb="item"></bbb>
</book> </div> <script type="text/javascript"> Vue.component("book", {
template :
"<div>" +
"<slot name='aaa'></slot>" +
"<ul>" +
"<slot name='bbb'></slot>" +
"</ul>" +
"</div>"
}); Vue.component("aaa", {
props : ['ta'],
template : "<h3>{{ta}}</h3>"
}); Vue.component("bbb",{
props : ['tb'],
template : "<li>{{tb}}</li>"
}); let vueModel = new Vue({
el : "#container-element",
data : {
head_title : "书籍列表",
items : [
"java",
"linux",
"c++",
"python",
"rust"
]
} });
</script>
效果:

自定义事件:
组件中的事件与要执行的方法是在这个组件对象中声明:

测试效果:

但是在vueModel对象中的方法是不能被组件调用的

当前的方法可以在控制台中使用

效果:

v-for似乎是可以设置一个迭代变量,然后可以传递这个变量给组件渲染:

还是不是很能理解方法的绑定:

简单来说就是这个意思:
$emit 触发父组件的自定义事件
代码:
<book>
<aaa slot="aaa" v-bind:ta="head_title"></aaa>
<bbb slot="aaa" v-for="(item,index) in items" v-bind:tb="item" v-bind:i="index" v-on:remove="removeBookItem(index)"></bbb>
</book> </div> <script type="text/javascript"> Vue.component("book", {
template :
"<div>" +
"<slot name='aaa'></slot>" +
"<ul>" +
"<slot name='bbb'></slot>" +
"</ul>" +
"</div>"
}); Vue.component("aaa", {
props : ['ta'],
template : "<h3>{{ta}}</h3>"
}); Vue.component("bbb",{
props : ['tb','i'],
template : "<li>{{i}} {{tb}} <button @click='remove'>移除书籍</button></li> ",
methods : {
remove : function (i) {
this.$emit("remove", i);
} } }); let vueModel = new Vue({
el : "#container-element",
data : {
head_title : "书籍列表",
items : [
"java",
"linux",
"c++",
"python",
"rust"
]
},
methods : {
removeBookItem : function (index) {
// splice方法 (要执行删除的当前元素的索引,要删除的元素的个数, ...要增加的元素)
alert("删除了:" + this.items[index]);
this.items.splice(index, 1);
}
} });
</script>
【Vue】03 Slot 插槽 & 自定义事件的更多相关文章
- Vue结合slot插槽分发父组件内容实现高度复用、更加灵活的dialog组件
		
之前写过一篇关于vue实现dialog会话框组件的文章(http://www.cnblogs.com/fozero/p/8546883.html)[http://www.cnblogs.com/foz ...
 - 使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件
		
写在前面 之前写过一篇关于vue实现dialog会话框组件的文章http://www.cnblogs.com/fozero/p/8546883.html, 讲到了如何实现一个vue对话框组件,其中涉及 ...
 - Vue 之 slot(插槽)
		
前言: vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项在使用频率.使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧 ...
 - vue子组件使用自定义事件向父组件传递数据
		
使用v-on绑定自定义事件可以让子组件向父组件传递数据,用到了this.$emit(‘自定义的事件名称’,传递给父组件的数据) <!DOCTYPE html> <html lang= ...
 - Vue学习之--------组件自定义事件(绑定、解绑)(2022/8/21)
		
文章目录 1.基础知识 2.代码实例 2.1 App.vue 2.2 school.vue 2.3 student.vue 3.测试效果(略) 4.实际应用(在组件化编码实战三的基础上改进) 4.1 ...
 - vue子组件的自定义事件
		
父子组件的信息传递无碍就是父组件给子组件传值(props和$attrs)和父组件触发子组件的事件($emit) 之前已经谈过了父组件给子组件传值了,现在来说说父组件触发子组件的自定义事件吧-- 实际上 ...
 - vue中slot插槽
		
插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口. 也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容 slot中可以设置一些默认的内 ...
 - vue深入了解组件——自定义事件
		
一.事件名 跟组件和prop不同,事件名不存在任何自动化的大小写转换.而是触发的事件名需要完全匹配监听这个事件所用的名称.举个例子,如果重复啊一个camelCase名字的事件: this.$emit( ...
 - 简单理解vue的slot插槽
		
slot的意思是插槽,想想你的电脑主板上的各种插槽,有插CPU的,有插显卡的,有插内存的,有插硬盘的,所以假设有个组件是computer,其模板是 <template> <div&g ...
 - vue 之 slot插槽
		
插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个slot最核心的两个问题这里就点出来了,父组件决定插槽显示或不显示以及怎样显示,子组件决定 ...
 
随机推荐
- 小程序转发 搜索wxml
			
新闻转发 在小程序中要不通过菜单项来完成分享功能,只能通过表单组件中的按钮来完成. 它是通过按钮中的开放能力完成 按钮自定义处理 新闻搜索 搜索wxml 搜索业务的js
 - INFINI Labs 产品更新 | 统一版本号 1.22.0
			
INFINI Labs 产品又更新啦~,包括 Console,Gateway,Loadgen,Agent 1.22.0.为了避免版本不同带来的困扰,以后发布均统一版本号,此次版本重点修复历史遗留 Bu ...
 - 西数 WD SATA SSD 固态 蓝盘 复制和剪切速度慢
			
现象:速度只有4,5M,活动时间100%.用AS SSD 测试速度正常. 问题:冷数据掉速.冷数据门. 解决方法:用DiskFresh,刷新下. 刷新时间,要看你存储数据的多少.我的1T 蓝盘,用了3 ...
 - OOM异常的4种可能分析及常见的OOM异常演示
			
OOM异常的4种可能分析及常见的OOM异常演示 OOM异常: OutOfMemoryError 1.JAVA堆溢出JAVA堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到这些对象之间 ...
 - Java反射获取字段的属性值及对比两个对象的属性值null差异赋值,递归算法查找
			
package com.example.demo; import java.lang.reflect.Field; /** * 需求描述:同一类的不同对象,如果某个字段的null则从另外的一个对象中赋 ...
 - Prime Solutions
			
Prime Solutions 以下是一段中学时代的惨痛回忆-每当学到排列组合的单元时,最痛苦的不是分析题目,也不是带错公式或计算错误,而是所谓的「苦工题」,以下这题是个例子:给定正整数N与S,求出方 ...
 - format( )函数
			
在Python中,DETAIL_URL.format(id=id) 是一个字符串格式化的表达式.它通常用于根据一个已定义的字符串模板 DETAIL_URL 来生成一个新的字符串.在这个模板中,会包含一 ...
 - Kubernetes(一)Overview
			
1. Kubernetes介绍 要了解Kubernetes,首先我们需要了解Container与Orchestration. Docker Docker的出现是为了解决:部署依赖.以及兼容性.以及繁琐 ...
 - todo高通Android UEFI中的LCD分析(1):启动流程分析
			
# 高通Android UEFI中的LCD分析(1):启动流程 背景 之前学习的lk阶段点亮LCD的流程算是比较经典,但是高通已经推出了很多种基于UEFI方案的启动架构. 所以需要对这块比较新的技术进 ...
 - 使用getevent在Android中调试输入子系统
			
# Android getevent用法详解 背景 在调试安卓设备按键,想使用hexdump,但是发现没有找到,反而找到了这个更好用的工具. 以下是我的调试片段 # getevent -l /dev/ ...