看如下代码,是我们直接在子组件模板中声明集合数据的遍历方式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue中的插槽与具名插槽</title>
<script src="vue.js"></script>
</head>
<body>
<div id = 'app2'>
<com>
</com>
</div>
<script>
Vue.component('com',{
data:function(){
return {
list:[1,2,3,4,5]
}
},
template:`<div>
<slot name='top'> default top</slot>
<div v-for='item of list'>{{item}}</div>
<slot name='bot'> default bot</slot>
</div>`
});
var app = new Vue({
el:'#app2'
});
</script>
</body>
</html>
但是 当我们有多个地方使用该模板时,对集合的遍历方式可能各不相同,所以就需要使用作用域插槽
1.<slot v-for='item of list' :item='item'></slot>
2. <template slot-scope='props'>
<h2>{{props.item}}</h2>
</template>
必须使用templatetemplate内对集合的遍历方式为自定义
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>vue中的插槽与具名插槽</title>
<script src="vue.js"></script>
</head>
<body>
<div id = 'app2'>
<com >
<template slot-scope='props'>
<h2>{{props.item}}</h2>
</template>
</com>
</div>
<script>
Vue.component('com',{
data:function(){
return {
list:[1,2,3,4,5]
}
},
template:`<div>
<slot name='top'> default top</slot>
<div >
<slot v-for='item of list' :item='item'></slot>
</div>
<slot name='bot'> default bot</slot>
</div>`
});
var app = new Vue({
el:'#app2'
});
</script>
</body>
</html>