VueJs使用Amaze ui調(diào)整列表和內(nèi)容頁面
制作左側(cè)菜單
一個(gè)后臺管理系統(tǒng),大致的樣式都是分為南北東西的,而西(也就是左側(cè))一般是我們的菜單。如圖:
我們今天就來把我們的項(xiàng)目完成到如上圖的樣式,首先我們來制作左側(cè)的菜單,在/src/components/下新建menu.vue。代碼如下:
<template> <div class="admin-sidebar am-offcanvas" id="admin-offcanvas"> <div 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> </div> </div> </template> <script> export default{ name : "Menu", data(){ return { menus:[{ name:"首頁", href:"/", childs:[] },{ name:"寫信", href:"/", childs:[] },{ name:"收件箱", href:"/Inbox", childs:[] },{ name:"發(fā)件箱", href:"/Outbox", childs:[] },{ name:"垃圾箱", href:"/", childs:[] },{ name:"草稿箱", href:"/", childs:[] },{ name:"其他文件夾", href:"/", childs:[{ name:"已發(fā)送郵件", href:"/" },{ name:"已刪除郵件", href:"/" }] }] } } } </script>
現(xiàn)在我們的菜單就已經(jīng)做好了,只需要將菜單應(yīng)用到我們的項(xiàng)目中就可以了。打開/src/App.vue,修改如下位置:
調(diào)整列表頁面
打開/src/pages/Index.vue代碼如下:
<template> <div class="admin-content"> <div class="admin-content-body"> <div class="am-cf am-padding am-padding-bottom-0"> <div class="am-fl am-cf"><strong class="am-text-primary am-text-lg">收件箱</strong> / <small>Inbox</small></div> </div> <hr> <div class="am-g"> <div class="am-u-sm-12 am-u-md-6"> <div class="am-btn-toolbar"> <div 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> </div> </div> </div> <div class="am-u-sm-12 am-u-md-3"> <div 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> </div> </div> </div> <!-- admin-content-body end --> <div class="am-g" style="margin-top:5px;"> <div 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">標(biāo)題</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> <div class="am-btn-toolbar"> <div 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> 復(fù)制</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> </div> </div> </td> </tr> </tbody> </table> <div class="am-cf"> 共 15 條記錄 <div 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> </div> </div> </form> </div> </div> <!-- am-g end --> </div> </div> </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>
注意:上面我們初始化查詢第一頁的數(shù)據(jù),并規(guī)定每頁顯示10條,我們沒有做分頁功能的開發(fā)。是由于cnodejs.org的api并沒有給我們返回分頁的信息,將來如果是實(shí)際開發(fā),那么接口正常情況是會返回分頁信息的,我們到時(shí)候再具體的渲染就好了。
調(diào)整內(nèi)容頁面
打開/src/pages/Content.vue,代碼如下:
<template> <div class="admin-content"> <h2 v-text="article.title"></h2> <p>作者:{{article.author.loginname}} 發(fā)表于:{{article.create_at}}</p> <hr> <article v-html="article.content"></article> <h3>網(wǎng)友回復(fù):</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> </div> </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>
到此為止我們就完成了列表頁面和內(nèi)容頁面的整合了,說明一下在調(diào)整后的script中,多了個(gè)mounted 方法,這個(gè)是vuejs的勾子函數(shù),我理解的意思表示元素已經(jīng)創(chuàng)建,數(shù)據(jù)也渲染完成。我們來設(shè)置admin-content的高度就沒有問題了,不過這個(gè)我不確定是我的寫法有問題,還是Amaze ui和vuejs整合后的影響,目前只能這樣解決了。
最終效果
列表頁面:
內(nèi)容頁面:
總結(jié)
以上所述是小編給大家介紹的VueJs使用Amaze ui調(diào)整列表和內(nèi)容頁面,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
詳解為什么Vue中不要用index作為key(diff算法)
這篇文章主要介紹了詳解為什么Vue中不要用index作為key(diff算法),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04使用vue3+ts+setup獲取全局變量getCurrentInstance的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于使用vue3+ts+setup獲取全局變量getCurrentInstance的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用vue3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2022-08-08Vue.js+express利用切片實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳
斷點(diǎn)續(xù)傳就是要從文件已經(jīng)下載的地方開始繼續(xù)下載,本文主要介紹了Vue.js+express利用切片實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳,具有一定的參考價(jià)值,感興趣的可以了解下2023-05-05vue-element-admin后臺生成動態(tài)路由及菜單方法詳解
vue-element-admin后臺管理系統(tǒng)模板框架 是vue結(jié)合element-ui一體的管理系統(tǒng)框架,下面這篇文章主要給大家介紹了關(guān)于vue-element-admin后臺生成動態(tài)路由及菜單的相關(guān)資料,需要的朋友可以參考下2023-09-09vue實(shí)現(xiàn)三級聯(lián)動動態(tài)菜單
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)三級聯(lián)動動態(tài)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-04-04使用babel-plugin-import?實(shí)現(xiàn)自動按需引入方式
這篇文章主要介紹了使用babel-plugin-import?實(shí)現(xiàn)自動按需引入方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-12-12Vue 實(shí)現(xiàn)一個(gè)簡單的鼠標(biāo)拖拽滾動效果插件
這篇文章主要介紹了Vue 實(shí)現(xiàn)一個(gè)簡單的鼠標(biāo)拖拽滾動效果插件,幫助大家更好的理解和使用vue框架,感興趣的朋友可以了解下2020-12-12