最外層組件AppFilm
<template>
<div class="app-film">
<AppFilmNav></AppFilmNav>
<AppFilmBox :infor='url' v-for="(url,i) in urls" :key='i'></AppFilmBox>
</div>
</template>
<script>
import AppFilmNav from './AppFilmNav'
import AppFilmBox from './AppFilmBox'
import AppCom from './AppCom'
export default {
name:'app-film',
components:{AppFilmNav,AppFilmBox,AppCom},
data(){
return {
urls:[
{title:'正在熱映',url:'/mz/v4/api/film/now-playing?page=1&count=7'},
{title:'即將上映',url:'/mz/v4/api/film/coming-soon?page=1&count=7'}
],
}
},
}
</script>
<style>
.app-film{
height: 0.5rem;
}
</style>
次外層組件AppBox
<template>
<div class="app-film-box">
<AppFilmItem :film='film' v-for="film in films" :key="film.id"></AppFilmItem>
</div>
</template>
<script>
import axios from 'axios'
import AppFilmItem from './AppFilmItem'
export default {
props:['infor'],
name:'app-film-box',
components:{AppFilmItem},
data:function(){
return {
films:[]
}
},
methods:{
getfilms(){
let that = this;
axios.get(that.infor.url).then(res=>{
console.log(res.data)
that.films = res.data.data.films
})
}
},
created(){
this.getfilms()
}
}
</script>
<style>
.app-film-box{
padding:0 15px;
}
</style>
里層組件appFilmItem
<template>
<div class="app-film-item">
<img :src="film.poster.origin" alt="">
<div class="info">
<h5>{{film.name}}</h5>
<p class="for">{{film.intro}}</p>
<p class="for1">{{film.cinemaCount}}家影院上映<i>{{film.watchCount}}人購票</i></p>
</div>
<div class="other">
<div class="range">8.5</div>
<i class="fa fa-angle-right"></i>
</div>
</div>
</template>
<script>
export default {
name:'app-film-item',
props:['film'],
}
</script>
<style lang="scss">
body{
background-color:#f9f9f9;
}
.app-film-item{
// padding-left: 20px;
// margin-top: -0.3rem;
display: flex;
align-items: center;
padding-bottom: 28px;
border-bottom: 1px solid #ccc;
padding-top: 25px;
img{
width:0.6rem;
}
.info{
padding-left: 15px;
display: inline-block;
width: 75%;
h5{
font-size: 16px;
line-height: 32px;
color: #000;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.for{
height: 24px;
line-height: 24px;
color: #8e8e8e;
font-size: 14px;
overflow: hidden;
text-overflow: ellipsis;
width: 100%;
display: inline-block;
}
.for1{
line-height: 24px;
color: #8e8e8e;
font-size: 12px;
i{
margin-left: 15px;
}
}
}
}
.other{
display: flex;
justify-content: space-between;
margin-right: 0.2rem;
margin-bottom:0.5rem;
.range{
font-size: 16px;
line-height: 32px;
color: #fc7103;
}
i{
padding-left: 5px;
line-height: 29px;
color: #c6c6c6;
}
}
</style>
還有一個導航組件appfilmNav
<template>
<div class="app-film-nav">
<div class="now_playing">
正在熱映
</div>
<div class="coming_soon">
即將上映
</div>
</div>
</template>
<script>
export default {
name:'app-film-nav',
data:function(){
}
}
</script>
<style lang='scss' scoped>
.app-film-nav{
height: 47px;
margin: 0.5rem 15px 5px 15px;
border-bottom: solid #fe6e00 1px;
// padding-left: 15px;
// padding-right:15px;
.now_playing{
color: #fe6e00;
border-bottom: solid;
float: left;
width: 50%;
height: 100%;
text-align: center;
font-size: 16px;
line-height: 46px;
// color: #6a6a6a;
cursor: pointer;
}
.coming_soon{
float: left;
width: 50%;
height: 100%;
text-align: center;
font-size: 16px;
line-height: 46px;
color: #6a6a6a;
cursor: pointer;
}
}
</style>
想要實現(xiàn)的效果是:
當我點擊即將上映的時候可以切換第二個url請求地址,點擊正在上映的時候就切換第一個url請求地址?
怎么破解?如何不用router來達到這個效果?
既然拆分為了這么多個組件,建議用vuex,定義url,點擊導航更改url值。
1.install vuex
2.在main.js入口文件中引入vuex
import Vuex from 'vuex'
Vue.use(Vuex)
3.定義urls以及初始url
const store = new Vuex.Store({
state:{
urls:[
{title:'正在熱映',url:'/mz/v4/api/film/now-playing?page=1&count=7'},
{title:'即將上映',url:'/mz/v4/api/film/coming-soon?page=1&count=7'}
],
posturl:'/mz/v4/api/film/now-playing?page=1&count=7'
}
})
4.定義vue實例時引入
new Vue({
el: '#app',
store:store,
template: '<App/>',
components: { App }
})
5.后面組件初始時請求this.$store.posturl
6.點擊導航,更改this
北大青鳥APTECH成立于1999年。依托北京大學優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學院和江蘇省首批服務(wù)外包人才培訓基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學培訓、網(wǎng)
達內(nèi)教育集團成立于2002年,是一家由留學海歸創(chuàng)辦的高端職業(yè)教育培訓機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍懿科技有限責任公司從事總經(jīng)理職務(wù)負責iOS教學及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風格 授課風格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。