顾名思义就是一个槽,可以嵌入各种各样的东西

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 插槽 & 自定义事件的更多相关文章

  1. Vue结合slot插槽分发父组件内容实现高度复用、更加灵活的dialog组件

    之前写过一篇关于vue实现dialog会话框组件的文章(http://www.cnblogs.com/fozero/p/8546883.html)[http://www.cnblogs.com/foz ...

  2. 使用Vue的slot插槽分发父组件内容实现高度复用、更加灵活的组件

    写在前面 之前写过一篇关于vue实现dialog会话框组件的文章http://www.cnblogs.com/fozero/p/8546883.html, 讲到了如何实现一个vue对话框组件,其中涉及 ...

  3. Vue 之 slot(插槽)

    前言: vue中关于插槽的文档说明很短,语言又写的很凝练,再加上其和methods,data,computed等常用选项在使用频率.使用先后上的差别,这就有可能造成初次接触插槽的开发者容易产生“算了吧 ...

  4. vue子组件使用自定义事件向父组件传递数据

    使用v-on绑定自定义事件可以让子组件向父组件传递数据,用到了this.$emit(‘自定义的事件名称’,传递给父组件的数据) <!DOCTYPE html> <html lang= ...

  5. Vue学习之--------组件自定义事件(绑定、解绑)(2022/8/21)

    文章目录 1.基础知识 2.代码实例 2.1 App.vue 2.2 school.vue 2.3 student.vue 3.测试效果(略) 4.实际应用(在组件化编码实战三的基础上改进) 4.1 ...

  6. vue子组件的自定义事件

    父子组件的信息传递无碍就是父组件给子组件传值(props和$attrs)和父组件触发子组件的事件($emit) 之前已经谈过了父组件给子组件传值了,现在来说说父组件触发子组件的自定义事件吧-- 实际上 ...

  7. vue中slot插槽

    插槽就是vue实现的一套内容分发的API,将插槽元素作为承载分发内容的出口. 也就是说在组件模板中默认占用一个位置,当使用组件标签时候,组件标签的内容就会自动替换掉内容 slot中可以设置一些默认的内 ...

  8. vue深入了解组件——自定义事件

    一.事件名 跟组件和prop不同,事件名不存在任何自动化的大小写转换.而是触发的事件名需要完全匹配监听这个事件所用的名称.举个例子,如果重复啊一个camelCase名字的事件: this.$emit( ...

  9. 简单理解vue的slot插槽

    slot的意思是插槽,想想你的电脑主板上的各种插槽,有插CPU的,有插显卡的,有插内存的,有插硬盘的,所以假设有个组件是computer,其模板是 <template> <div&g ...

  10. vue 之 slot插槽

    插槽,也就是slot,是组件的一块HTML模板,这块模板显示不显示.以及怎样显示由父组件来决定. 实际上,一个slot最核心的两个问题这里就点出来了,父组件决定插槽显示或不显示以及怎样显示,子组件决定 ...

随机推荐

  1. Nodejs概述 安装Nodejs os模块 path模块 url模块 querystring模块

    一.Nodejs概述 介绍 相关网址: https://nodejs.org/zh-cn/ http://nodejs.cn/ Node.js 是一个开源与跨平台的JavaScript 运行时环境.它 ...

  2. 使用Jsoup和htmlunit爬取动态网页

    在对http://zkgg.tjtalents.com.cn/newzxxx.jsp这个网页爬取内容时,如果只使用Jsoup进行解析的话,起内部的a href标签内容无法获取到. 但是实际上通过 Do ...

  3. kettle从入门到精通 第十六课 kettle 映射 (子转换)02

    1.上节讲的子映射里面只有一个转换(类似一个java类里面只有一个公共方法),本次讲解的有两个,实际上可以有任意多个(一个java类里面有多个公共方法).两个转换分别计算x+y和x*y. 2.命名参数 ...

  4. 对pta的总结_1

    前言 这三次pta难度在不断上升的同时,要求我们线上慕课+自主学习来了解更多的java中的各种方法,如:正则表达式 List Map等.与此同时要求我们展开尝试并熟练类的构造,类的引用,链表的基本运用 ...

  5. ubuntu server 22.04 安装docker

    ubuntu server 22.04 安装docker 官方安装文档: https://docs.docker.com/engine/install/ubuntu/ 1.更新软件列表: sudo a ...

  6. 为什么https要使用证书

    为什么https要使用证书 什么是httpshttps不是一种新的协议,只是http的通信接口部分使用了ssl和tsl协议替代,加入了加密.证书.完整性保护的功能. 加密:共享密钥加密加密和解密公用一 ...

  7. 解析Html Canvas的卓越性能与高效渲染策略

    一.什么是Canvas 想必学习前端的同学们对Canvas 都不陌生,它是 HTML5 新增的"画布"元素,可以使用JavaScript来绘制图形. Canvas元素是在HTML5 ...

  8. 洛谷 P1216 数字三角形

    题目链接:数字三角形 思路 dp:金字塔顶的元素为起点,金字塔每行的最左侧数字只能从上一层的最左侧数字到达,如7 -> 3 -> 8 -> 2 -> 4,这些数字中的每一个(除 ...

  9. Python str 转 b’二进制串

    用raw_unique_escape来编码无义意的二进制串 bytes(strtext, encoding='raw_unique_escape')

  10. 使用AWS Glue进行 ETL 工作

    数据湖 数据湖的产生是为了存储各种各样原始数据的大型仓库.这些数据根据需求,进行存取.处理.分析等.对于存储部分来说,开源版本常见的就是 hdfs.而各大云厂商也提供了各自的存储服务,如 Amazon ...