前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >6.页面绘制-帖子列表页和前端路由

6.页面绘制-帖子列表页和前端路由

作者头像
玩蛇的胖纸
发布2021-07-13 11:50:22
4240
发布2021-07-13 11:50:22
举报

1.新建帖子列表页tiezi

1.新建帖子列表页面

在pages/shequ目录下新建页面tiezi。然后在pages.json中将tiezi配置为首页,方便观察调试。

2.新建css文件

在pages/shequ/tiezi目录下新建css文件tiezi.css

在pages/shequ/tiezi/tiezi.vue中引用:

tiezi.vue:

代码语言:javascript
复制
<style>
    @import url("tiezi.css");
</style>

这样可以方便调试css样式。

3.主题详情

tiezi.vue:

代码语言:javascript
复制
<template>
    <view>
        <view class="zhuti">
            <view class="left">
                <image class="touxiang" src="@/static/touxiang.png" mode=""></image>
            </view>
            <view class="right">
                <view class="username padding">
                    <view class="u1">孤天里的鹤</view>
                    <view class="u1 text-gray">举报</view>
                </view>
                <view class="content ">
                    <view class="content-text ">
                        我要爆料我要爆料
                        我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料
                        我要爆料我要爆料
                    </view>
                    <view class="content-img">
                        <image src="@/static/banner1.png" mode=""></image>
                        <image src="@/static/banner2.png" mode=""></image>
                        <image src="@/static/banner3.png" mode=""></image>
                        <image src="@/static/banner4.png" mode=""></image>
                    </view>
                    
                </view>
                <view class="text-gray text-sm text-right padding">
                    
                    <text class="cuIcon-attentionfill margin-lr-xs"></text> 1分钟前
                    <text class="cuIcon-attentionfill margin-lr-xs"></text> 1111
                    <text class="cuIcon-messagefill margin-lr-xs"></text> 22222
                </view>
            </view>
        </view>
        
        <u-line class="u-line" color="gray" border-style="dashed"></u-line>
        
        
        

        
        
        
        
    </view>
</template>

<script>
    
    export default {
        data() {
            return {
                
            }
        },
        methods: {
            
        }
        
    }
</script>

<style>
    @import url("tiezi.css");
</style>

tiezi.css:

代码语言:javascript
复制
    .zhuti{
        width: 100%;
        min-height: 200upx;
        /* background-color: #19BE6B; */
        display: flex;
    }
    .left{
        width: 100upx;
        /* background-color: #007AFF; */
        text-align: center;
    }
    .touxiang{
        width: 70upx;
        height: 70upx;
        margin-top: 25upx;
    }
    .right{
        width: 650upx;
        /* background-color: #2C405A; */
        display: flex;
        flex-direction: column;
        justify-content: space-between;
    }
    .username{
        display: flex;
        justify-content: space-between;
    }
        
    .content-img{
        display: flex;
        flex-wrap: wrap;
        
    }
    .content-img image{
        width: 300upx;
        height: 300upx;
        margin: 10upx;
    }

效果图:

4.帖子列表排列方式的切换

使用uVIew组件中的Dropdown下拉菜单组件

在tiezi.vue中:

代码语言:javascript
复制
<template>
    <view>
<u-dropdown>
            <u-dropdown-item v-model="value1" title="排列" :options="options1" @change="change"></u-dropdown-item>
        </u-dropdown>
</view>
</template>

<script>
    
    export default {
        data() {
            return {
                
                value1:1,
                options1: [{label: '按热度',value: 1,},{label: '按时间',value: 2,}]
                
            }
        },
        methods: {
            
            change(){
                console.log(this.value1)
            }
        }
        
    }
</script>

5.回复列表

tiezi.vue中:

代码语言:javascript
复制
<template>
    <view>
        
        <view class="zhuti huifu shadow-warp bg-white" v-for="(item,index) in huifu" :key="index">
            <view class="left">
                <image class="touxiang" src="@/static/touxiang.png" mode=""></image>
            </view>
            <view class="right">
                <view class="username padding">
                    <view class="u1">孤天里的鹤</view>
                    <view class="u1 text-gray">举报</view>
                </view>
                <view class="content ">
                    <view class="text-gray text-sm padding">
                        <span class="text-blue">用户1:</span>
                        我要回复我要回复
                        我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料
                        我要爆料我要爆料
                    </view>
                    <view class="content-text ">
                        我要回复我要爆料
                        我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料我要爆料
                        我要爆料我要爆料
                    </view>
                    <view class="content-text padding-lr" v-if="huifu_tie">
                        <view class="cu-form-group" style="border: #808080 1px dashed;">
                            <textarea maxlength="-1" spellcheck="false" @input="textareaAInput" placeholder="多行文本输入框"></textarea>
                        </view>
                        <view class="text-right padding-top padding-lr">
                            <button @click="huifu1" class="cu-btn round bg-blue shadow sm ">发布</button>
                        </view>
                    </view>
                </view>
                <view class="text-gray text-sm text-right padding huitie_foot">
                    <view class="margin-lr"><text class="cuIcon-attentionfill margin-lr-xs"></text> 1分钟前</view>
                    <view class="margin-lr" @click="htz"><text class="cuIcon-attentionfill margin-lr-xs"></text> 回复</view>
                    <view class="margin-lr"><text class="cuIcon-appreciate margin-lr-xs"></text> 22</view>
                </view>
            </view>
        </view>
        
    
    </view>
</template>

<script>
    
    export default {
        data() {
            return {
                huifu:['回复1','回复2','回复3','回复4'],
                huifu_tie:false,
                textareaAValue: '',
                
                
            }
        },
        methods: {
            textareaAInput(e) {
                this.textareaAValue = e.detail.value
            },
            htz(e){
                this.huifu_tie=true
                console.log(1111)
            },
            huifu1(e){
                console.log('回复帖子')
                this.huifu_tie=false
            }
            
        }
        
    }
</script>

<style>
    @import url("tiezi.css");
</style>

tiezi.css中:

代码语言:javascript
复制
    .zhuti{
        width: 100%;
        min-height: 200upx;
        /* background-color: #19BE6B; */
        display: flex;
    }
    .left{
        width: 100upx;
        /* background-color: #007AFF; */
        text-align: center;
    }
    .touxiang{
        width: 70upx;
        height: 70upx;
        margin-top: 25upx;
    }
    .right{
        width: 650upx;
        /* background-color: #2C405A; */
        display: flex;
        flex-direction: column;
        justify-content: space-between;
    }
    .username{
        display: flex;
        justify-content: space-between;
    }
        
    .content-img{
        display: flex;
        flex-wrap: wrap;
        
    }
    .content-img image{
        width: 300upx;
        height: 300upx;
        margin: 10upx;
    }
    
    .huifu{
        margin-bottom: 20upx;
    }
    .huitie_foot{
        display: flex;
        flex-direction: row-reverse;
    }

6.回复组件

用到了uni-app的官方ui组件中的分页组件+多行输入框

tiezi.vue中:

代码语言:javascript
复制
<template>
    <view>

        <uni-pagination show-icon="true" total="63" current="1" pageSize="10" @change="change1"></uni-pagination>
        
        <u-gap height="80"></u-gap>    
        
        <view class="content-text padding-lr">
            <view class="cu-form-group" style="border: #808080 1px dashed;">
                <textarea maxlength="-1" spellcheck="false" @input="textareaAInput" placeholder="回复内容"></textarea>
            </view>
            <view class="text-right padding-top padding-lr">
                <button @click="huifu1" class="cu-btn bg-blue shadow">发布</button>
            </view>
        </view>
        
        <u-gap height="80"></u-gap>    
        

    
    </view>
</template>

<script>
    
    export default {
        data() {
            return {
                huifu:['回复1','回复2','回复3','回复4'],
                huifu_tie:false,
                textareaAValue: '',
                value1:1,
                options1: [{label: '按热度',value: 1,},{label: '按时间',value: 2,}]
                
            }
        },
        methods: {
            textareaAInput(e) {
                this.textareaAValue = e.detail.value
            },
            
            change1(e) {
                console.log(e)
                this.current = e.current
            }
            
        }
        
    }
</script>

<style>
    @import url("tiezi.css");
</style>

效果图:

2.前端路由

在pages.json中让首页配置为首页。

在pages/shequ/shequ.vue中添加路由相关代码:

代码语言:javascript
复制
<template>
    <view class="content">
        
        <view class="card" v-for="(item,index) in shequ_data" :key=index @click="GoToZhuTiList(item)">    
……………………
    
    </view>
</template>
<script>
    export default {
        data() {
            return {
        },
        methods: {
            GoToZhuTiList(e){
                console.log(e.title)
                uni.navigateTo({
                      url:"./zhuti_list/zhuti_list?bankuai_title="+e.title
              })
            }
            
        }
    }
</script>

在pages/shequ/zhuti_list/zhuti_list.vue中添加路由相关代码:

代码语言:javascript
复制
<template>
    <view>
        <view v-for="(item,index) in zhuti_data" :key="index" @click="GoToTieZi(item)" class="cu-item radius padding-lr-lg shadow-warp bg-white margin-top">
            ………………
……    
            
    </view>
</template>

<script>
    export default {
        data() {
            return {
        },
        methods: {
            
            GoToTieZi(e){
                    // console.log(e.title)
                    uni.navigateTo({url:"../tiezi/tiezi?bankuai_title="+this.bankuai_title})
            }
        },
        onLoad(e) {
            console.log(e)
            this.bankuai_title=e.bankuai_title
            uni.setNavigationBarTitle({
                title: e.bankuai_title
            });
        }
    }
</script>

在pages/shequ/tiezi/tiezi.vue内添加路由相关代码:

代码语言:javascript
复制
<script>
    
    export default {
        data() {
            return {
        },
        methods: {
            
        },
        onLoad(e) {
            console.log(e)
            
            uni.setNavigationBarTitle({
                title: e.bankuai_title
            });
        }
        
    }
</script>
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021-07-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.新建帖子列表页tiezi
    • 1.新建帖子列表页面
      • 2.新建css文件
        • 3.主题详情
          • tiezi.vue:
          • tiezi.css:
        • 4.帖子列表排列方式的切换
          • 5.回复列表
            • 6.回复组件
        • 2.前端路由
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档