vue.js之slot
来源:互联网 发布:c语言写个三角形 编辑:程序博客网 时间:2024/05/21 09:13
没有slot的情况
<div id="app"> <child> <span>1111</span> </child></div><script> // 注册子组件 Vue.component("child", { template: "<div>这是一个div标签</div>" }); // 初始化父组件 new Vue({ el: "#app" });</script>
模版里的span标签会被替代成 “<div>这是一个div标签</div>
” 如下图:
有slot的情况
slot的意思是插槽,想想你的电脑主板上的各种插槽,有插CPU的,有插显卡的,有插内存的,有插硬盘的,所以假设有个组件是computer,其模板是template ,如下:
<body> <div id="app"> <computer> <div slot="CPU">Intel Core i7</div> <div slot="GPU">GTX980Ti</div> <div slot="Memory">Kingston 32G</div> <div slot="Hard-drive">Samsung SSD 1T</div> </computer> </div> <script> // 注册子组件 Vue.component("computer", { template: `<div> <slot name="CPU">这儿插你的CPU</slot> <slot name="GPU">这儿插你的显卡</slot> <slot name="Memory">这儿插你的内存</slot> <slot name="Hard-drive">这儿插你的硬盘</slot> </div>` }); // 初始化父组件 new Vue({ el: "#app" }); </script></body>
单个slot
简单来说,使用slot标签,可以将<span>1111</span>
,放到子组件中想让他显示的地方。如下图:
<div id="app"> <child> <span>1111</span> </child></div><script> // 注册子组件 Vue.component("child", { template: "<div>这是<slot></slot>一个div标签</div>" }); // 初始化父组件 new Vue({ el: "#app" });</script>
即使有多个标签,会一起被插入,相当于用父组件放在子组件里的标签,替换了<slot></slot>
这个标签。如下图:
<div id="app"> <child> <span>1111</span> <i>2222</i> <b>3333</b> </child></div><script> // 注册子组件 Vue.component("child", { template: "<div>这是<slot></slot>一个div标签</div>" }); // 初始化父组件 new Vue({ el: "#app" });</script>
具名Slot(有名称的slot)
将放在子组件里的不同html标签放在不同的位置
父组件在要分发的标签里添加 slot=”name名” 属性
子组件在对应分发的位置的slot标签里,添加name=”name名” 属性,
然后就会将对应的标签放在对应的位置了。如下图:
<div id="app"> <child> <span slot="one">1111</span> <i slot="two">2222</i> <b slot="three">3333</b> </child></div><script> // 注册子组件 Vue.component("child", { template: `<div> 这是 <slot name='one'></slot> 一个 <slot name='two'></slot> div <slot name='three'></slot> 标签 </div>` }); // 初始化父组件 new Vue({ el: "#app" });</script>
没有slot属性
如果子组件标签中没有slot属性,将会显示默认的值
<div id="app"> <child> <!-- <span slot="one">1111</span> --> <i slot="two">2222</i> <!-- <b slot="three">3333</b> --> </child> </div> <script> // 注册子组件 Vue.component("child", { template: `<div> <slot name='one'>no one</slot> <slot name='two'>no two</slot> <slot name='three'>no three</slot> </div>` }); // 初始化父组件 new Vue({ el: "#app" }); </script>
slot=”two” 就被插到固定的位置上,如下图:
作用域插槽 ( 2.1.0 新增 )
作用域插槽是一种特殊类型的插槽,用作一个 (能被传递数据的) 可重用模板,来代替已经渲染好的元素。
在子组件中,只需将数据传递到插槽,就像你将 prop 传递给组件一样
在父级中,具有特殊特性 slot-scope 的 <template>
元素必须存在,表示它是作用域插槽的模板。
slot-scope 的值将被用作一个临时变量名,此变量接收从子组件传递过来的 prop 对象:
<div id="app"> <child> <template slot-scope="props"> <p>hello from parent</p> <p>{{ props.tt }}</p> </template> </child></div><script> Vue.component('child', { template: `<div class="child"> <slot tt="hello from child"></slot> </div>` }) new Vue({ el: "#app" });</script>
阅读全文
0 0
- vue.js之slot
- Vue.js的组件(五)分发 之 单个Slot
- Vue.js的组件(六)分发 之 具名Slot
- vue.js中使用slot
- vue.js中使用slot
- Vue之slot内容分发
- Vue之slot分发内容
- 例子讲解Vue.js的slot分发
- 【20】vue.js — slot占位符
- Vue.js组件——slot杂记
- Vue 学习之路之slot
- vue之组件 slot内容分发
- 常用js框架之vue.js(深入四:组件2,slot内容分发,编译作用域,动态切换组件)
- Vue Slot用法
- vue笔记--------slot
- Vue组件中的slot
- vue里面的slot
- vue slot内容分发
- Effect框架之一
- 摩尔定律还有效吗?
- 4用于cifar10的卷积神经网络-4.2/4.3cifar10卷积神经网络的计算图设计(上下)
- Spring Boot事务配置
- 提高MySQL性能的7个技巧
- vue.js之slot
- 第一章:Eclipse用Maven搭建SSM框架并部署到Tomcat7
- Shell脚本语法2
- CEPH集群MON全部挂掉后恢复方法
- AIME数学竞赛信息大全
- vc++窗口的创建过程(MFC消息机制的经典文章)
- Maven生命周期详解及常用命令
- 《计算机操作系统》总结十(文件管理)
- 怎样减少 Android 应用包 60% 的大小?