VueJs如何使用Amaze ui調整清單和內容頁面的方法
本文我們主要和大家分享VueJs如何使用Amaze ui調整清單和內容頁面的方法,希望能幫助大家。
一個後台管理系統,大致的樣式都是分成南北東西的,而西(也就是左邊)一般是我們的選單。如圖:
我們今天就來把我們的專案完成到如上圖的樣式,首先我們來製作左邊的選單,在/src/components/下新建menu.vue。程式碼如下:
<template> <p class="admin-sidebar am-offcanvas" id="admin-offcanvas"> <p class="am-offcanvas-bar admin-offcanvas-bar"> <ul class="am-list admin-sidebar-list"> <li class="admin-parent" v-for="menu in menus"><router-link :to="menu.href">{{menu.name}}</router-link> <ul class="am-list am-collapse admin-sidebar-sub am-in" id="collapse-nav"> <li v-for="child in menu.childs" v-if="menu.childs"><router-link :to="child.href"><span class="am-icon-check"></span> {{child.name}}<span class="am-icon-star am-fr am-margin-right admin-icon-yellow"></span></router-link></li> </ul> </li> </ul> </p> </p> </template> <script> export default{ name : "Menu", data(){ return { menus:[{ name:"首页", href:"/", childs:[] },{ name:"写信", href:"/", childs:[] },{ name:"收件箱", href:"/Inbox", childs:[] },{ name:"发件箱", href:"/Outbox", childs:[] },{ name:"垃圾箱", href:"/", childs:[] },{ name:"草稿箱", href:"/", childs:[] },{ name:"其他文件夹", href:"/", childs:[{ name:"已发送邮件", href:"/" },{ name:"已删除邮件", href:"/" }] }] } } } </script>
現在我們的選單就已經做好了,只需要將選單應用到我們的專案中就可以了。開啟/src/App.vue,修改以下位置:
#調整清單頁面
開啟/ src/pages/Index.vue程式碼如下:
<template> <p class="admin-content"> <p class="admin-content-body"> <p class="am-cf am-padding am-padding-bottom-0"> <p class="am-fl am-cf"><strong class="am-text-primary am-text-lg">收件箱</strong> / <small>Inbox</small></p> </p> <hr> <p class="am-g"> <p class="am-u-sm-12 am-u-md-6"> <p class="am-btn-toolbar"> <p class="am-btn-group am-btn-group-xs"> <button type="button" class="am-btn am-btn-default" @click="toAdd"><span class="am-icon-plus"></span> 新增</button> <button type="button" class="am-btn am-btn-default" @click="save"><span class="am-icon-save"></span> 保存</button> <button type="button" class="am-btn am-btn-default" @click="verify"><span class="am-icon-archive"></span> 审核</button> <button type="button" class="am-btn am-btn-default" @click="remove"><span class="am-icon-trash-o"></span> 删除</button> </p> </p> </p> <p class="am-u-sm-12 am-u-md-3"> <p class="am-input-group am-input-group-sm"> <input type="text" class="am-form-field"> <span class="am-input-group-btn"> <button class="am-btn am-btn-default" type="button">搜索</button> </span> </p> </p> </p> <!-- admin-content-body end --> <p class="am-g" style="margin-top:5px;"> <p class="am-u-sm-12"> <form class="am-form"> <table class="am-table am-table-striped am-table-hover table-main am-table-bordered am-table-radius" > <thead> <tr> <th class="table-check"><input type="checkbox" /></th><th class="table-id">ID</th><th class="table-title">标题</th><th class="table-type">类别</th><th class="table-author am-hide-sm-only">作者</th><th class="table-date am-hide-sm-only">修改日期</th><th class="table-set">操作</th> </tr> </thead> <tbody> <tr v-for="(item,index) in tableList"> <td><input type="checkbox" /></td> <td>{{index + 1}}</td> <td><router-link :to="'/Content/' + item.id">{{item.title}}</router-link></td> <td>{{item.tab}}</td> <td class="am-hide-sm-only">{{item.author.loginname}}</td> <td class="am-hide-sm-only">{{item.create_at}}</td> <td> <p class="am-btn-toolbar"> <p class="am-btn-group am-btn-group-xs"> <button class="am-btn am-btn-default am-btn-xs am-text-secondary"><span class="am-icon-pencil-square-o"></span> 编辑</button> <button class="am-btn am-btn-default am-btn-xs am-hide-sm-only"><span class="am-icon-copy"></span> 复制</button> <button class="am-btn am-btn-default am-btn-xs am-text-danger am-hide-sm-only"><span class="am-icon-trash-o"></span> 删除</button> </p> </p> </td> </tr> </tbody> </table> <p class="am-cf"> 共 15 条记录 <p class="am-fr"> <ul class="am-pagination"> <li class="am-disabled"><a href="#">«</a></li> <li class="am-active"><a href="#">1</a></li> <li><a href="#">2</a></li> <li><a href="#">3</a></li> <li><a href="#">4</a></li> <li><a href="#">5</a></li> <li><a href="#">»</a></li> </ul> </p> </p> </form> </p> </p> <!-- am-g end --> </p> </p> </template> <script> export default{ name : "Inbox", data () { return { tableList: [] } }, created () { this.initialization() }, mounted () { $(".admin-content").css("height",(document.documentElement.clientHeight-36-50)+"px"); }, methods: { initialization () { this.$api.get('topics', {page:1,limit:10}, r => { console.log(r); if(r.success){ this.tableList = r.data; } }) }, toAdd(){ alert("添加"); }, save(){ alert("保存"); }, verify(){ alert("审核"); }, remove(){ alert("删除"); } } } </script>
注意:上面我們初始化查詢第一頁的數據,並規定每頁顯示10條,我們沒有做分頁功能的開發。是由於cnodejs.org的api並沒有給我們返回分頁的信息,將來如果是實際開發,那麼接口正常情況是會返回分頁信息的,我們到時候再具體的渲染就好了。
調整內容頁面
開啟/src/pages/Content.vue,程式碼如下:
<template> <p class="admin-content"> <h2 v-text="article.title"></h2> <p>作者:{{article.author.loginname}} 发表于:{{article.create_at}}</p> <hr> <article v-html="article.content"></article> <h3>网友回复:</h3> <ul> <li v-for="i in article.replies"> <p>评论者:{{i.author.loginname}} 评论于:{{i.create_at}}</p> <article v-html="i.content"></article> </li> </ul> </p> </template> <script> export default { name : "Content", data () { return { id: this.$route.params.id, article: { author: { loginname:"" } } } }, created () { this.getData(); }, mounted () { $(".admin-content").css("height",(document.documentElement.clientHeight-36-50)+"px"); }, methods: { getData () { this.$api.get('topic/' + this.id, null, r => { console.log(r.data); this.article = r.data; }) } } } </script>
到此為止我們就完成了清單頁面和內容頁面的整合了,說明一下在調整後的script中,多了個mounted 方法,這個是vuejs的勾子函數,我理解的意思表示元素已經創建,資料也渲染完成。我們來設定admin-content的高度就沒問題了,不過這個我不確定是我的寫法有問題,還是Amaze ui和vuejs整合後的影響,目前只能這樣解決了。
最終效果
清單頁面:
#內容頁面:
以上是VueJs如何使用Amaze ui調整清單和內容頁面的方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

如何使用WebSocket和JavaScript實現線上語音辨識系統引言:隨著科技的不斷發展,語音辨識技術已成為了人工智慧領域的重要組成部分。而基於WebSocket和JavaScript實現的線上語音辨識系統,具備了低延遲、即時性和跨平台的特點,成為了廣泛應用的解決方案。本文將介紹如何使用WebSocket和JavaScript來實現線上語音辨識系

WebSocket與JavaScript:實現即時監控系統的關鍵技術引言:隨著互聯網技術的快速發展,即時監控系統在各個領域中得到了廣泛的應用。而實現即時監控的關鍵技術之一就是WebSocket與JavaScript的結合使用。本文將介紹WebSocket與JavaScript在即時監控系統中的應用,並給出程式碼範例,詳細解釋其實作原理。一、WebSocket技

如何利用JavaScript和WebSocket實現即時線上點餐系統介紹:隨著網路的普及和技術的進步,越來越多的餐廳開始提供線上點餐服務。為了實現即時線上點餐系統,我們可以利用JavaScript和WebSocket技術。 WebSocket是一種基於TCP協定的全雙工通訊協議,可實現客戶端與伺服器的即時雙向通訊。在即時線上點餐系統中,當使用者選擇菜餚並下訂單

如何使用WebSocket和JavaScript實現線上預約系統在當今數位化的時代,越來越多的業務和服務都需要提供線上預約功能。而實現一個高效、即時的線上預約系統是至關重要的。本文將介紹如何使用WebSocket和JavaScript來實作一個線上預約系統,並提供具體的程式碼範例。一、什麼是WebSocketWebSocket是一種在單一TCP連線上進行全雙工

JavaScript和WebSocket:打造高效的即時天氣預報系統引言:如今,天氣預報的準確性對於日常生活以及決策制定具有重要意義。隨著技術的發展,我們可以透過即時獲取天氣數據來提供更準確可靠的天氣預報。在本文中,我們將學習如何使用JavaScript和WebSocket技術,來建立一個高效的即時天氣預報系統。本文將透過具體的程式碼範例來展示實現的過程。 We

JavaScript教學:如何取得HTTP狀態碼,需要具體程式碼範例前言:在Web開發中,經常會涉及到與伺服器進行資料互動的場景。在與伺服器進行通訊時,我們經常需要取得傳回的HTTP狀態碼來判斷操作是否成功,並根據不同的狀態碼來進行對應的處理。本篇文章將教你如何使用JavaScript來取得HTTP狀態碼,並提供一些實用的程式碼範例。使用XMLHttpRequest

用法:在JavaScript中,insertBefore()方法用於在DOM樹中插入一個新的節點。這個方法需要兩個參數:要插入的新節點和參考節點(即新節點將要插入的位置的節點)。

JavaScript是一種廣泛應用於Web開發的程式語言,而WebSocket則是一種用於即時通訊的網路協定。結合二者的強大功能,我們可以打造一個高效率的即時影像處理系統。本文將介紹如何利用JavaScript和WebSocket來實作這個系統,並提供具體的程式碼範例。首先,我們需要明確指出即時影像處理系統的需求和目標。假設我們有一個攝影機設備,可以擷取即時的影像數
