【微信小程序】列表渲染wx:for

简介: < block>标签没有实质意义,仅仅是一个包装,不会在页面内被渲染,在block标签中包裹的元素将被重复渲染。

2240207563b6467a8d9f08fe31053e27.gif


🏆今日学习目标:第十二期——列表渲染wx:for

😃创作者:颜颜yan_

✨个人主页:颜颜yan_的个人主页

⏰预计时间:20分钟

🎉专栏系列:我的第一个微信小程序


前言


哈喽大家好,本期是微信小程序专栏第十二期,本期我们将学习列表渲染wx:for。


注意:每期内容是连载呢,建议大家可以看看往期内容,更好理解噢~


效果图


e3f7f7587ec84a9bb51f2d82fd43abe3.png


07db253191a3454e844301df04954c7e.png


< block>< /block>标签


< block>标签没有实质意义,仅仅是一个包装,不会在页面内被渲染,在block标签中包裹的元素将被重复渲染。


在block标签上,放置了一个wx:for的属性,它的值为{{postList}}。wx:for将绑定一个数组,也就是post.js中的postList数组,它对应post.js文件中的setData数组数据。


wx:for-item指定数组当前元素的变量名,如下,我们将元素的变量名指定为item。


wx:for-index指定当前元素在数组中序号的变量名,我们命名为idx。


f289a220b458412d933dc43a84d03a6d.png


如果将wx:for-item="item"属性去掉,文章列表依然可以正常显示。


此时,不定义item,但是{{}}内依然有item,这是因为如果不定义数组子元素的变量名,小程序默认子元素的变量名就是item。也可以将它替换为其他的变量名,如果更改了子元素的变量名,那么{{}}中对应的也要进行更改。


post.js


将文章的数据提取到post.js中,组成一个数组。


 /**
     * 生命周期函数--监听页面加载
     * option为页面跳转所带来的参数
     */
    onLoad:function(options) {
        var postList = [{
            object:{
                date:"Nov 9 2022",
            },
            title:"那个不为人知的故事",
            postImg:"/images/post/unknow-story.jpg",
            avatar:"/images/avatar/avatar-5.png",
            content:"超人气作者Twentine(无量渡口)经典之作,直击心底深处的柔软。这是杨昭和陈铭生的故事,这是卧底缉毒警察的故事。 你始终不曾离去,你永远在我心底。",
            readingNum:10989,
            collectionNum:{
                array:[1867]
            },
            commentNum:999
        },
        {
            object:{
                date:"Nov 10 2022",
            },
            title:"边城",
            postImg:"/images/post/biancheng.jpg",
            avatar:"/images/avatar/avatar-2.png",
            content:"沈从文代表作之一,重现湘西世界的诗意与纯净,书写人情美、人事美、人性美",
            readingNum:9999,
            collectionNum:{
                array:[8766]
            },
            commentNum:886
        },
        {
            object:{
                date:"Nov 11 2022",
            },
            title:"活着",
            postImg:"/images/post/alive.jpg",
            avatar:"/images/avatar/avatar-3.png",
            content:"《活着》讲述了人如何去承受巨大的苦难;讲述了眼泪的宽广和丰富;讲述了绝望的不存在;讲述了人是为了活着本身而活着的,而不是为了活着之外的任何事物而活着。",
            readingNum:1234,
            collectionNum:{
                array:[5676]
            },
            commentNum:890
        },
        {
            object:{
                date:"Nov 12 2022",
            },
            title:"哈利波特百科全书",
            postImg:"/images/post/harry.jpg",
            avatar:"/images/avatar/avatar-4.png",
            content:"手里没有哈利波特百科全书 ,怎么能称得上真正的哈迷!涵盖哈利·波特全系列内容,配全新精美素描插图、哈利波特魔法世界历史年表。",
            readingNum:789,
            collectionNum:{
                array:[906]
            },
            commentNum:345
        },
        {
            object:{
                date:"Nov 19 2022",
            },
            title:"三体:全三册 刘慈欣代表作",
            postImg:"/images/post/santi.jpg",
            avatar:"/images/avatar/avatar-5.png",
            content:"《三体》第73届世界科幻雨果奖获奖作品,银河奖特别奖,《三体3》轨迹奖长篇科幻小说!2017年世界雨果奖提名作品。",
            readingNum:99,
            collectionNum:{
                array:[8766]
            },
            commentNum:89
        }
    ]
        this.setData({
            postList: postList
        })
    },


post.wxml


1、使用< block>< /block>标签将文章列表部分包裹起来

2、添加wx:for实现数据绑定,wx:for-item设置子元素变量名。


<!-- 轮播图 -->
<view>
    <swiper indicator-dots="true" autoplay="true" interval="3000" vertical="{{false}}" circular="true">
        <swiper-item>
            <image src="/images/post/post-1@text.jpg"></image>
        </swiper-item>
        <swiper-item>
            <image src="/images/post/post-2@text.jpg"></image>
        </swiper-item>
        <swiper-item>
            <image src="/images/post/post-3@text.jpg"></image>
        </swiper-item>
    </swiper>
    <!-- 文章列表 -->
    <block wx:for="{{postList}}" wx:for-item="item" wx:for-index="idx">
        <!-- view组件通常被用来当作容器或者是区域分隔 -->
        <view class="post-container">
            <view class="post-author-date">
                <image src="{{item.avatar}}"></image>
                <text>{{item.object.date}}</text>
            </view>
            <text class="post-title">{{item.title}}</text>
            <image class="post-image" src="{{item.postImg}}" mode="aspectFit"></image>
            <text class="post-content">{{item.content}}</text>
            <!-- 收藏 浏览 评价-->
            <view class="post-like">
                <image src="/images/icon/wx_app_collect.png"></image>
                <text>{{item.readingNum}}</text>
                <image src="/images/icon/wx_app_view.png"></image>
                <text>{{item.collectionNum.array[0]}}</text>
                <image src="/images/icon/wx_app_message.png"></image>
                <text>{{item.commentNum}}</text>
            </view>
        </view>
    </block>
</view>


post.json


这里主要是配置post页面的导航栏背景色。我们在post.json中输入 "navigationBarBackgroundColor": "#145282"就可以更改导航栏的颜色啦~


全局配置是在app.json中,单个页面的配置在页面的json文件中配置。


页面的json文件和app.json文件配置的区别


  • 页面的json文件只能够配置和window相关的属性,app.json除了可以配置window外还可以配置pages、tabBar等选项。
  • 页面的json配置只需要加上window对象,就可以直接编写window下面的配置项。


{
    "usingComponents": {},
    "navigationBarBackgroundColor": "#145282"
}


总结


以上就是今天的学习内容啦~

如果有兴趣的话可以订阅专栏,持续更新呢~

咱们下期再见~


a3d60525d02a4482b35fb806bfecb1a2.gif

相关文章
|
4月前
|
JSON 小程序 前端开发
towxml的使用,在微信小程序中快速将markdown格式渲染为wxml文本
本文介绍了在微信小程序中使用`towxml`库将Markdown格式文本渲染为WXML的方法。文章提供了`towxml`的概述、安装步骤、以及如何在小程序中配置和使用`towxml`进行Markdown解析的详细说明和代码示例。
|
4月前
|
小程序 开发者
微信小程序之网络数据请求 wx:request的简单使用
这篇文章介绍了微信小程序中如何使用wx.request进行网络数据请求,包括请求的配置、请求的格式以及如何在开发阶段关闭请求的合法检验。
微信小程序之网络数据请求 wx:request的简单使用
|
4月前
|
小程序 前端开发 索引
微信小程序中的条件渲染和列表渲染,wx:if ,wx:elif,wx:else,wx:for,wx:key的使用,以及block标记和hidden属性的说明
这篇文章介绍了微信小程序中条件渲染和列表渲染的使用方法,包括wx:if、wx:elif、wx:else、wx:for、wx:key以及block标记和hidden属性的使用。
微信小程序中的条件渲染和列表渲染,wx:if ,wx:elif,wx:else,wx:for,wx:key的使用,以及block标记和hidden属性的说明
|
4月前
|
小程序
wx:for 微信小程序双重for嵌套如何获取内层的迭代对象
本文介绍了微信小程序中`wx:for`循环嵌套的使用方法,特别是如何在外层循环中访问内层循环的迭代对象。通过在外层`wx:for`中使用默认的`item`进行迭代,并在内层`wx:for`中通过`wx:for-item`属性指定迭代对象的名称,从而实现了双重`for`嵌套并获取内层迭代对象的目的。
|
5月前
|
小程序 前端开发 JavaScript
小程序中wx:if 和hidden的区别
在微信小程序中,wx:if和hidden都是用于控制元素显示与隐藏的方法,但它们在工作原理和性能上存在显著差异。
126 3
|
6月前
|
小程序 开发者
【微信小程序】 微信小程序报错不在以下request合法域名列表中
【微信小程序】 微信小程序报错不在以下request合法域名列表中
1137 0
|
3月前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
868 7
|
3月前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
867 1
|
3月前
|
小程序 前端开发 测试技术
微信小程序的开发完整流程是什么?
微信小程序的开发完整流程是什么?
213 7
ly~
|
4月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
99 6