1.组件定义:
定义组件时,将组件中的数据绑定到slot标签。
Vue.component("page-frame",{
template:`<div>
<div id="header" style="width:100%; height:100px; background:pink">
<slot name="s1"></slot>
</div>
<div style="width:100%; height:510px">
<slot name="s2" v-bind:musics="songs"></slot>
</div>
<div id="footer" style="width:100%; height:40px; background:lightgray">{{cr}}</div>
</div>`,
props:["title","cr"],
data:function(){
return{
songs:[
{
"id":001,
"name":"逆战",
"artists":[
{
"id":01,
"name":"张杰"
}
]
},
{
"id":002,
"name":"隐形",
"artists":[
{
"id":02,
"name":"张韶涵"
}
]
}
]
};
}
})
2.引用组件时,在填充插槽的模板上使用slot-scopt属性获取插槽绑定的值。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<link rel="stylesheet" href="css/bootstrap.css" />
<script type="text/javascript" src="js/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="js/bootstrap.js"></script>
<script type="text/javascript" src="js/vue.js"></script>
</head>
<body>
<div id="container">
<page-frame title="标题" cr="千峰武汉">
<template slot="s1">
<input type="text"/><button type="button">搜索</button>
</template>
<!--在使用模板填充组件插槽时,可以使用slot-scope属性获取组件插槽绑定的数据-->
<template slot="s2" slot-scope="res">
<table class="table table-bordered table-condensed">
<tr>
<th>序号</th>
<th>歌曲id</th>
<th>歌名</th>
<th>歌手</th>
<th>操作</th>
</tr>
<tr v-for="song,index in res.musics">
<td>{{index+1}}</td>
<td>{{song.id}}</td>
<td>
{{song.name}}
</td>
<td>
<span v-for="artist in song.artists"> {{artist.name}}</span>
</td>
<td width="18%">
<button type="button" class="btn btn-primary btn-xs">播放</button>
</td>
</tr>
</table>
</template>
</page-frame>
</div>
<script type="text/javascript" src="js/vue.js" ></script>
<script type="text/javascript" src="js/my-components.js" ></script>
<script type="text/javascript">
var vm = new Vue({
el:"#container"
});
</script>
</body>
</html>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/128136.html