隨著互聯網的快速發展,新聞平臺逐漸成為了人們獲取信息的重要途徑。為了增加用戶體驗,許多新聞平臺都會提供新聞詳情的查看功能。今天我們就來討論一下如何用Vue實現一個新聞列表詳情頁面。
首先在Vue中渲染一個新聞列表是非常簡單的,我們只需要在Vue的模板中使用v-for指令遍歷新聞數組,輸出每條新聞的標題和概要即可。代碼如下:
{{news.title}}
{{news.summary}}
接下來我們需要實現點擊新聞列表中的某一個新聞,能夠跳轉到對應的新聞詳情頁面。這里我們可以使用Vue-Router來實現路由功能。我們先定義一個router-link組件,將點擊事件綁定到這個組件上:
{{news.title}}
這樣點擊這個鏈接的時候,就會跳轉到路由配置中名字為newsDetail的路由,并且將當前新聞的id作為參數傳遞過去。
在新聞詳情頁面中,我們根據路由傳遞的id參數,請求對應新聞的詳情內容。可以在組件的created()鉤子中向后端發送請求獲取新聞詳情數據:
created() { axios.get('/api/news_detail/'+this.$route.params.id) .then(res =>{ this.newsDetail = res.data; }) }
接收到數據之后,我們可以直接在模板中渲染出新聞詳情了:
{{newsDetail.title}}
{{newsDetail.content}}
最后,我們還可以為新聞詳情頁面添加評論功能。可以先向后端發送請求獲得當前新聞的評論列表,并渲染到模板中:
然后,我們可以為頁面添加一個表單,讓用戶輸入評論內容。并通過axios發送POST請求提交評論內容到后端:
... submitComment() { axios.post('/api/comment',{ newsId:this.$route.params.id, content:this.comment, username:this.username }).then(res =>{ //提交成功后重新請求評論列表 this.fetchComments(); }); }這樣一個基本的新聞列表詳情頁面就完成了。你可以通過不斷完善這個頁面,為用戶帶來更好的體驗,比如增加點贊功能、可視化的閱讀統計等等。
下一篇vue無法導出視頻
評論列表
{{comment.username}}
{{comment.content}}