vue 内置组件__slot讲解

时间:2022-01-18 10:30:32

slot 是vue的内置组件,主要分为传值和接收值两部分;

首先写一个自定义组件:例如 <js></js>

再写一个template模板

并在构造器中使用components:{} 挂载,

在构造器的data中写一个选项方法:

data: {
  jsData: {
    url: 'http://www.baidu.com',
    netName: '百度',
    skill: 'seach'
  }
},
主要是传值与接收值部分;
在自定义组件中传值,通过(key,value)的方式
<js>
  <span slot="url">{{ jsData.url }}</span>
  <span slot="netName">{{ jsData.netName }}</span>
  <span slot="skill">{{ jsData.skill }}</span>
</js>
然后在template模板中接收传入的值:
<template id="tep">
  <div>
    <p>百度地址:<slot name="url"></slot></p>
    <p>名称:<slot name="netName"></slot></p>
    <p>作用:<slot name="skill"></slot></p>
   </div>
</template>
将其挂载到 js 组件中
var js = {
  template: '#tep'
}
完整代码示例如下:
 
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>slot</title>
<script src="../assets/js/vue.js"></script>
</head>

<body>
<h1>slot</h1>
<hr>
<div id="app">
<js>
<span slot="url">{{ jsData.url }}</span>
<span slot="netName">{{ jsData.netName }}</span>
<span slot="skill">{{ jsData.skill }}</span>
</js>
</div>

<template id="tep">
<div>
<p>百度地址:<slot name="url"></slot></p>
<p>名称:<slot name="netName"></slot></p>
<p>作用:<slot name="skill"></slot></p>
</div>
</template>

<script>

var js = {
template: '#tep'
}

var app = new Vue({
el: '#app',
data: {
jsData: {
url: 'http://www.baidu.com',
netName: '百度',
skill: 'seach'
}
},
components: {
'js': js
}
})
</script>
</body>

</html>
vue 内置组件__slot讲解

vue 内置组件__slot讲解