vue2中,根據(jù)list的id進(jìn)入對(duì)應(yīng)的詳情頁(yè)并修改title方法
一般項(xiàng)目中,我們會(huì)遇到有個(gè)list。。。然后你隨便點(diǎn)擊一個(gè),會(huì)進(jìn)入他對(duì)應(yīng)的詳情頁(yè)。。。正常,那個(gè)詳情頁(yè)是一個(gè)公共的組件,我們只需根據(jù)id傳值來(lái)判斷,這個(gè)頁(yè)面顯示的是哪個(gè)list的數(shù)據(jù)即可。如圖:點(diǎn)擊電影進(jìn)入電影詳情……以此類推
具體代碼如下:
(有人會(huì)奇怪,我為什么不循環(huán)……這個(gè)是根據(jù)項(xiàng)目需求而定的,這個(gè)相當(dāng)于入口,而進(jìn)入里面分別對(duì)應(yīng)的還是多個(gè)list,并且后臺(tái)給的圖片的url也不一樣,我懶得v-if去寫了,so,這三個(gè)我就用了通過(guò)了路由id過(guò)去。當(dāng)然,后面有循環(huán)list。。兩種不同的方式,大家根據(jù)自己的項(xiàng)目來(lái)選擇就好微笑)
<template> <section class="club"> <section class="img2_cont"> <router-link to="/club/itemList/0"> <section> <img :src="getContextPathSrc+movie_url"> <p>電影 • 紀(jì)錄片</p> </section> </router-link> <router-link to="/club/itemList/1"> <section> <img :src="getContextPathSrc+music_url"> <p>室內(nèi)樂(lè) • 下午茶</p> </section> </router-link> <router-link to="/club/itemList/2"> <section> <img :src="getContextPathSrc+sport_url"> <p>沙龍 • 講談</p> </section> </router-link> </section> </section> </template> <script> import api from './../fetch/api'; import { mapGetters } from 'vuex'; export default { name: 'club', data () { return { backMsg: {}, movie_url: '', music_url: '', sport_url: '', } }, computed: { ...mapGetters([ 'getContextPathSrc', 'sessionId', 'token' ]) }, created() { api.commonApi('后臺(tái)接口url','params') .then(res => { this.backMsg = res.data; // 電影圖片 this.movie_url = res.data.IMG_LIST[0].IMG_URL; // 室內(nèi)樂(lè) this.music_url = res.data.IMG_LIST[1].IMG_URL; // 體育圖片 this.sport_url = res.data.IMG_LIST[2].IMG_URL; }) }, } </script>
而路由index.js里面需要如下寫:
{ path: 'itemList/:id', name: 'itemList', component: resolve => require(['components/club/itemList.vue'], resolve) },
這樣就完成了初步的列表進(jìn)入對(duì)應(yīng)的頁(yè)面。有人會(huì)發(fā)現(xiàn), 看我的截圖,明顯是有左右滑動(dòng)的,這里是我把代碼刪掉了,因?yàn)槟莻€(gè)不是我今天要鞏固的= =。接下來(lái),就是在對(duì)應(yīng)頁(yè)面是N個(gè)列表list,我們需要點(diǎn)擊每個(gè)進(jìn)入他所對(duì)應(yīng)的詳情頁(yè),而我也是用循環(huán)寫的list(就是上面的第二張圖片,推薦下的list太多了,不循環(huán)會(huì)死人的偷笑),具體代碼如下:
<template> <div class="page-loadmore"> <section class="Ctab"> <p :class="{tActive:tActive}" @click="toRecommend()">推薦</p> <p :class="{lActive:lActive}" @click="toClassic()">經(jīng)典</p> </section> <!-- 下拉加載更多產(chǎn)品列表 --> <load-more :bottom-method="loadBottom" :bottom-all-loaded="allLoaded" :bottomPullText='bottomText' :auto-fill="false" @bottom-status-change="handleBottomChange" ref="loadmore"> <ul class="page-loadmore-list"> <li v-for="(item,key) in backMsg" class="page-loadmore-listitem"> <movie-type :item="item"></movie-type> </li> </ul> <div v-if="loading" slot="bottom" class="loading"> <img src="./../../assets/main/uploading.gif"> </div> </load-more> </div> </template> <script type="text/babel"> import api from './../../fetch/api'; import { mapGetters } from 'vuex'; import LoadMore from './../common/loadmore.vue'; import MovieType from './movieType.vue'; export default { props:{ TYPE: Number, backMsg: Array, dataType: String, loading: Boolean, allLoaded: Boolean, pageNo: Number, }, data() { return { tActive: true, lActive: false, status: '', bottomText: '上拉加載更多...', }; }, computed: { ...mapGetters([ 'getContextPathSrc', 'sessionId', 'token' ]), }, components: { LoadMore, MovieType }, methods: { // 點(diǎn)擊推薦按鈕 toRecommend: function() { this.tActive = true; this.lActive = false; this.$emit('toRecommend', {dataType: this.dataType, TYPE: this.TYPE}); }, // 點(diǎn)擊經(jīng)典按鈕 toClassic: function() { this.tActive = false; this.lActive = true; this.$emit('toClassic', {dataType: this.dataType, TYPE: this.TYPE}); }, // 加載更多的方法 loadBottom: function() { alert(1) this.$emit('loadBottom', {dataType: this.dataType, TYPE: this.TYPE}); }, handleBottomChange(status) { this.bottomStatus = status; }, }, }; </script>
這里我把循環(huán)出的列表寫了個(gè)單獨(dú)的組件。movieType組件內(nèi)容如下:
<template> <div class="page-loadmore"> <router-link :to="'/club/itemDetail/'+item.ID"> <section> <img :src="getContextPathSrc+item.IMG_URL" class="Pimg"> <section> <h3>{{item.NAME}}</h3> <aside> <img src="../../assets/club/city.png"> <span>{{item.CITY}}</span> </aside> <aside> <img src="../../assets/club/time.png"> <span>{{item.START_DATE | movieTime}}-{{item.END_DATE | movieTime}}</span> </aside> </section> </section> </router-link> </div> </template> <script> import api from './../../fetch/api'; import { mapGetters } from 'vuex'; import LoadMore from './../common/loadmore.vue'; export default { props:{ item: Object, }, data() { return { }; }, computed: { ...mapGetters([ 'getContextPathSrc', 'sessionId', 'token' ]), }, }; </script>
當(dāng)然,最重要的一步不能忘掉。。。我們需要修改路由index.js文件:
{ path: 'itemDetail/:ID', name: 'itemDetail', component: resolve => require(['components/club/itemDetail.vue'], resolve) },
這樣就大功告成了。兩種方法,喜歡哪種用哪種就好。。
以上這篇vue2中,根據(jù)list的id進(jìn)入對(duì)應(yīng)的詳情頁(yè)并修改title方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue-router?導(dǎo)航完成后獲取數(shù)據(jù)的實(shí)現(xiàn)方法
這篇文章主要介紹了vue-router?導(dǎo)航完成后獲取數(shù)據(jù),通過(guò)使用生命周期的 created() 函數(shù),在組件創(chuàng)建完成后調(diào)用該方法,本文結(jié)合實(shí)例代碼給大家講解的非常詳細(xì)需要的朋友可以參考下2022-11-11詳解在vue中如何實(shí)現(xiàn)屏幕錄制與直播推流功能
屏幕錄制和直播推流是現(xiàn)代Web應(yīng)用中常用的功能,Vue作為一種流行的JavaScript框架,提供了一些工具和庫(kù),可以方便地實(shí)現(xiàn)屏幕錄制和直播推流功能,本文將介紹如何在Vue中進(jìn)行屏幕錄制和直播推流,需要的朋友可以參考下2024-01-01vue element Cascader級(jí)聯(lián)選擇器解決最后一級(jí)顯示空白問(wèn)題
這篇文章主要介紹了vue element Cascader級(jí)聯(lián)選擇器解決最后一級(jí)顯示空白問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10Vue檢測(cè)屏幕變化來(lái)改變不同的charts樣式實(shí)例
這篇文章主要介紹了Vue檢測(cè)屏幕變化來(lái)改變不同的charts樣式實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-10-10vue通過(guò)watch對(duì)input做字?jǐn)?shù)限定的方法
本篇文章主要介紹了vue通過(guò)watch對(duì)input做字?jǐn)?shù)限定的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07el-table?樹形數(shù)據(jù)?tree-props?多層級(jí)使用避坑
本文主要介紹了el-table?樹形數(shù)據(jù)?tree-props?多層級(jí)使用避坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08