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>