<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.min.js"></script>
<script src="js/vue.js"></script>
<script src="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/js/bootstrap.min.js"></script>
<link href="https://cdn.bootcss.com/twitter-bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<style>
.box {
width: 200px;
border-radius: 10px;
overflow: hidden;
background-color: #eee;
float: left;
margin: 10px;
}
.box h2 {
text-align: center;
font-weight: normal;
font-size: 20px;
}
#select:after {
content: '';
display: block;
clear: both;
}
</style>
</head>
<body>
<div id="app" style="text-align: center;font-size: 48px">
<h3 style="display: inline" @click="selectTitle('tv')">电视</h3>
<h3 style="display: inline" @click="selectTitle('phone')">手机</h3>
<local-tag :data_select="data_select"></local-tag>
</div>
<script>
var img_tag = {
props: ['info'],
template: `
<div class="box">
<img :src="info.img" @click="selected" >
<h2>{{ info.title }}</h2>
</div>`,
methods: {
selected() {
this.$emit('selected', this.info);
}
},
};
var localTag = {
props: ["data_select"],
data() {
return {
selected_info: ""
};
},
template: `
<div>
<div id='select' >
<img_tag v-for="(info,i) in data_select" :info="info" @selected="selected"></img_tag>
</div>
<h2>{{ selected_info | f1}}</h2>
</div>`,
methods: {
selected(info) {
this.selected_info = info
}
},
filters: {
f1(selected_info) {
if (selected_info) {
return selected_info.title + '被选中';
} else {
return "未选中任何广告"
}
}
},
components: {
'img_tag': img_tag
}
};
new Vue({
el: '#app',
data: {
ad_data: {
tv: [
{img: 'img/tv/001.jpg', title: 'tv1'},
{img: 'img/tv/002.jpg', title: 'tv2'},
{img: 'img/tv/003.jpg', title: 'tv3'},
{img: 'img/tv/004.jpg', title: 'tv4'},
],
phone: [
{img: 'img/phone/001.jpg', title: 'phone1'},
{img: 'img/phone/002.jpg', title: 'phone2'},
{img: 'img/phone/003.jpg', title: 'phone3'},
{img: 'img/phone/004.jpg', title: 'phone4'},
]
},
data_select: [
{img: 'img/tv/001.jpg', title: 'tv1'},
{img: 'img/tv/002.jpg', title: 'tv2'},
{img: 'img/tv/003.jpg', title: 'tv3'},
{img: 'img/tv/004.jpg', title: 'tv4'},
]
},
components: {
'local-tag': localTag
},
methods: {
selectTitle(title) {
this.data_select = this.ad_data[title];
}
}
});
</script>
</body>
</html>