slot插槽详细用法(1)不具名和具名插槽

news/2024/7/10 0:47:36 标签: vue, slot, 插槽
//html 部分代码
<div id="div">

<adiv v-bind:style="componStyle" >
<button>这是一个按钮</button>
<p>这是一个没绑定slot的段落</p>  
</adiv > 

</div>

<script>

//组件部分
Vue.component('adiv', {  
  data:
	  function(){
		         return{lovingVue:""}
				  },
//模板内容
  template:
	  `<div >这个红色区域是模板里面div元素<br><br> 
	   </div>`
})

//vue 实例
new Vue({
	el:"#div",
	data:{ 
		componStyle:{
			backgroundColor:"red",
			fontSize:"20px",
			width:"200px",
			height:"200px"},
			lovingVue:"好的"},
})


</script>

1. 不使用<slot>, 在html 代码部分,自定义元素中间的其他代码不显示

模板中没有添加<slot>,html 代码部分的 <adiv></adiv>自定义元素 中间的其他代码都没有显示,只显示了<adiv></adiv>自定义元素 (这里自定义元素中的 <button> 和 <p> 元素都没有显示出来)

<adiv v-bind:style="componStyle" >
<button>这是一个按钮</button>
<p>这是一个没绑定slot的段落</p>  
</adiv >

2. 组件模板部分添加<slot>, html 代码部分的 自定义元素中间的其他代码都显示了

Vue.component('adiv', {  
  data:
	  function(){
		         return{lovingVue:""}
				  },
  template:
	  `<div >这个红色区域是模板里面div元素<br><br> 
	   <slot></slot>
	   </div>`
})

3. 具名插槽:使用 <slot> 中的 "name" 属性绑定元素

上面的 2 例子中,<slot> 没有使用 "name" 属性绑定元素,是不具名插槽

这个例子中,使用使用 <slot> 中的 "name" 属性绑定元素。

 

例子解析:

在 html 部分的<button> 元素使用 slot 属性:<button slot="btn">

vue组件部分添加<slot> 并使用 name 属性: <slot  name="btn">

html 部分代码 

<div id="div">
<adiv v-bind:style="componStyle" >
<button slot="btn">这是一个按钮</button>
<p>这是一个没绑定slot的段落</p>  
</adiv > 

</div>

 组件部分代码

Vue.component('adiv', {  
  ... },

  template:
	  `<div >这个红色区域是模板里面div元素<br><br> 
	   <slot name="btn"></slot>
	   </div>`
})

网页渲染效果:

和具名插槽绑定的<button>元素显示出来了。

但是由于 <p> 元素没有绑定slot,所以,"<p>这是一个没绑定slot的段落</p>" 这个内容没有显示

4. 具名插槽和不具名插槽同时使用

此时添加一个没有 "name" 属性的不具名插槽

现在html 里面的所有代码都显示出来了。

Vue.component('adiv', {  
 .... },

  template:
	  `<div >这个红色区域是模板里面div元素<br><br> 
	   <slot name="btn"></slot>
	   <slot></slot>   //添加了一个不具名插槽
	   </div>`
})

结论:

插槽 <slot> 的作用,就是可以在 vue组件模板中添加一个位置,使 html 代码部分 的自定义元素中间的内容,可以显示。

具名插槽可以通过绑定来分开控制不同的内容


http://www.niftyadmin.cn/n/1528974.html

相关文章

redis 切换db

一台服务器上都快开启200个redis实例了&#xff0c;看着就崩溃了。这么做无非就是想让不同类型的数据属于不同的应用程序而彼此分开。 那么&#xff0c;redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢&#xff1f;就相当于MySQL数据库&#xff0c…

slot 默认值使用

html 代码部分 Vue.component(adiv, { ... },template:<div>这个黄色区域是模板里的 div元素<br><br> <button><slot>用slot的默认值</slot></button></div> })vue 代码部分 <div id"div"> <adiv v-…

spring 整合redis 怎么选定指定的数据库

spring 整合redis 怎么选定指定的数据库 2017年03月19日 16:38:11 阅读数&#xff1a;742 前段时间&#xff0c;自学redis时&#xff0c;公司的项目中遇见了一个选定指定库的问题 spring整合redis的配置网上到处都是就不说了&#xff0c;一般都是下面的配置方法 class"…

redis切换数据库的方法【jedis】

redis切换数据库的方法【jedis】 2017年07月08日 15:14:13 阅读数&#xff1a;24600 package com.test; import redis.clients.jedis.Jedis; public class readredis { public static void main(String[] args) { // 连接本地的 Redis 服务 Jedis jedis new Jedis(&q…

slot 用法(2):编译作用域

html 代码部分 <div id"div"><comp> 插槽访问数据属性&#xff1a;{{like}} </comp> </div> 组件代码部分 Vue.component(comp, { ... },template:<p>这里是模板中的p元素<br><br><slot></slot> </p&g…

redis-JedisPoolConfig配置解读

redis-JedisPoolConfig配置 JedisPoolConfig config new JedisPoolConfig(); //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true config.setBlockWhenExhausted(true); //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最…

JS中的$().each

JS中的$().each var dn_doc_no “”; //判断是否有勾选item KaTeX parse error: Expected EOF, got # at position 3: ("#̲docCenter input…(this).attr(“checked”) ‘checked’ && $(this).val() ! ‘on’) { doc_no $(this).val() ‘,’; } }); var ur…

component加上 is:动态组件用法(可以切换多个模板的组件)

在我们平时使用vue中的模板的时候&#xff0c;许多时候都是直接定义成一个固定的模板&#xff0c;但是&#xff0c;vue中提供了一个动态模板&#xff0c;可以在任意模板中切换&#xff0c;就是用vue中<component>用:is来挂载不同的组件。 <div id"app" v-cl…