需要打开浏览器 cors 插件
<body>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body{
background-color: #d2d2d2;
}
ul {
list-style: none;
display: flex;
flex-wrap: wrap;
width: 1300px;
margin: 0 auto;
}
ul li {
width: 250px;
margin: 0 10px 10px 0;
background-color: #fff;
border-radius: 10px;
}
ul li img{
width: 250px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
}
.imggg{
width: 100%;
}
.txt{
padding: 10px;
}
.txt span{
font-size: 14px;
color: #666;
}
.txt p{
width: 170px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
margin-bottom: 10px;
}
</style>
<div id='myApp'>
<ul>
<li is="my-com" v-for="item in arr" :key="item.room_id" :child-obj="item"></li>
</ul>
</div>
<!-- 组件模板 -->
<template id='myTem'>
<li>
<div class="imggg">
<img :src="childObj.room_src" alt="">
</div>
<div class="txt">
<p>{{childObj.room_name}}</p>
<span>{{childObj.nickname}}</span>
<h3>{{name}}</h3>
</div>
</li>
</template>
<script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script>
<script>
Vue.component('myCom', {
template: '#myTem',
data(){
return{}
// 问: 为什么组件中的data必须是一个函数
// 在创建或注册模板的时候传入一个 data 属性作为用来绑定的数据。但是在组件中,data必须是一个函数,因为每一个 vue 组件都是一个 vue 实例,通过 new Vue() 实例化,引用同一个对象,如果 data 直接是一个对象的话,那么一旦修改其中一个组件的数据,其他组件相同数据就会被改变,而 data 是函数的话,每个 vue 组件的 data 都因为函数有了自己的作用域,互不干扰。
},
props: ["childObj"],
})
new Vue({
el: '#myApp',
data: {
arr: []
},
created() {
fetch("http://open.douyucdn.cn/api/RoomApi/live?page=1").then(res => {
return res.json();
}).then(data1 => {
this.arr = data1.data
console.log(this.arr);
})
}
})
</script>
</body>