热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

小程序料理第四课如何设计一个简单列表

上一篇教程中讲到了列表与下拉,这次教程我们接着往下讲.三、列表与下拉这部分涉及了几个文件的传值和绑定操作,还有一些基本的函数,在我们了解如何设计列表之前,需要知道一些基本

    上一篇教程中讲到了列表与下拉,这次教程我们接着往下讲.

三、列表与下拉

    这部分涉及了几个文件的传值和绑定操作,还有一些基本的函数,在我们了解如何设计列表之前,需要知道一些基本操作。

首先我们了解一下数据的绑定 ,其实列表中的动态数据均来自对应 Page 的 data部分,数据绑定使用 Mustache 语法(双大括号)将变量包起来。我们先举几个例子了解一下:

(1)WXML文件:

<view> {{ message }} view>

JS文件:


Page({
  data: {
    message: 'Hello MINA!'
  }
})

在界面上的显示为message的内容Hello MINA!

(2)WXML文件:
<viewid="item-{{id}}">view>
    JS文件:
Page({
  data: {
    id: 0
  }
}) 

用于给view的id赋值

(3)WXML文件:
"{{condition}}">

         JS文件:

Page({
  data: {
    condition: true
  }
})

       参与判断,如果if之后的结果为true则显示,为false则不显示

(4)WXML文件:

true:boolean 类型的 true,代表真值。

false: boolean 类型的 false,代表假值。

<checkbox checked="{{false}}"> checkbox>

特别注意:关键字false要用双括号括起来,不要直接写 checked="false",其计算结果是一个字符串,转成 boolean 类型后代表真值。

   而双大括号也支持一些运算,如三元运算{{flag ? true : false}}、

算术运算{{a + b}} + {{c}} + d、逻辑判断

字符串运算{{"hello" +name}}、数据路径计算{{object.key}} {{array[0]}}等,除此之外还能组合成数组、对象,这个我们在用到的时候再提。

       接着我们来讨论一下要列出列表所需要的另外的工具wx:for和wx:if

wx:for

wx:for用于列表的循环,将在page中绑定的数组依次遍历输出。默认数组的当前项的下标变量名默认为 index,数组当前项的变量名默认为 item(下面搬运了不少官方文档=^=),以下为基本用法:

 

"{{array}}">

  {{index}}: {{item.message}}

Page({

  data: {

    array: [{

      message: 'foo',

    }, {

      message: 'bar'

    }]

  }

})

使用 wx:for-item 可以指定数组当前元素的变量名,使用 wx:for-index 可以指定数组当前下标的变量名:

"{{array}}" wx:for-index="idx" wx:for-item="itemName">

  {{idx}}: {{itemName.message}}

wx:for 也可以嵌套,下边是一个九九乘法表

"{{[1,2, 3, 4, 5, 6, 7, 8, 9]}}" wx:for-item="i">

  "{{[1, 2, 3, 4, 5,6, 7, 8, 9]}}" wx:for-item="j">

    "{{i <= j}}">

      {{i}} * {{j}} = {{i * j}}

   

 

可以将 wx:for 用在标签上,以渲染一个包含多节点的结构块。

如果列表中项目的位置会动态改变或者有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如  中的输入内容, 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。

wx:key 的值以两种形式提供

1.    字符串,代表在 for 循环的 array 中 item 的某个 property,该property 的值需要是列表中唯一的字符串或数字,且不能动态改变。

2.    保留关键字 *this 代表在 for 循环中的 item 本身,这种表示需要 item 本身是一个唯一的字符串或者数字

注意:

当 wx:for 的值为字符串时,会将字符串解析成字符串数组

<viewwx:for="array">
  {{item}}
view>

等同于

<viewwx:for="{{['a','r','r','a','y']}}">
  {{item}}
view>

注意: 花括号和引号之间如果有空格,将最终被解析成为字符串

<viewwx:for="{{[1,2,3]}} ">
  {{item}}
view>

等同于

<viewwx:for="{{[1,2,3] + ' '}}" >
  {{item}}
view>

wx:if

在框架中,使用 wx:if="{{condition}}" 来判断是否需要渲染该代码块:

"{{condition}}"> True

也可以用 wx:elif 和 wx:else 来添加一个 else 块:

"{{length> 5}}"> 1

"{{length> 2}}"> 2

3


    了解了以上这些基本的用法,接下来我们就可以愉快的创建我们想要的列表了。

首先在JS文件中的page的data里面,我们创建数组groups:

groups: [{

     id: 1,

     name: "我的消息",

     hidden: true,

     count: 0

   }, {

     id: 2,

     name: "我的收藏",

     hidden: true,

     count: 0

   }, {

     id: 3,

     name: "我的好友",

     hidden: true,

     count: 6

   }],

然后在wxml文件中,设置列表显示

<blockwx:for="{{groups}}"wx:key="id"wx:for-index="idxgrp"wx:for-item="groups">

<viewclass="list-view-groups"   id="{{groups.id}}"bindtap="groupclick">

 <viewclass="list-view-image">

     <blockwx:if="{{true}}">

       <imageclass="list-image"id="image{{groups.id}}"src="/../image/me.png">image>

     block>

     <blockwx:else>

       <imageclass="list-image"id="image{{groups.id}}"src="/../image/mass.png">image>

     block>

    view>

    <viewclass="list-view-text">

     <textclass="list-text"id="name{{groups.id}}">{{groups.name}}text>

    view>

    <viewclass="list-view-count">

     <textclass="list-text-count"id="count{{groups.id}}">({{groups.count}})text>

    view>

  view>

  block>

其中第一行的代码用来设置对数组的遍历,第二行<viewclass="list-view-groups"设置列表组,第三行<viewclass="list-view-image">设置列表图片,<blockwx:if="{{true}}">设置是否可见,而<viewclass="list-view-text">设置列表文字,接着<viewclass="list-view-count">设置列表消息或者统计条数

紧接着,我们设置一下上面三个部分的格式,以免看起来太突兀。在wxss中写下如下代码:

.list-text {

  font-size:16px;

  margin-left:5px;

}

 

.list-view-groups {

  display:flex;

  height:40px;

  flex-direction:row;

  align-items:center;

  justify-content:left;

  border-bottom:1pxsolidlightgray;

}

 

.list-image {

  margin-left:5px;

  width:24px;

  height:24px;

}

 

.list-view-count {

  width:10%;

}

 

.list-view-image {

  width:10%;

}

 

.list-view-text {

  width:80%;

}

    ​我们的列表就初步完成了,显示效果如下:

 

 

 

 



推荐阅读
  • 微信小程序自定义组件与页面的相互传参
    这篇文章主要为大家介绍了微信小程序自定义组件与页面的相互传参过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家 ... [详细]
  • 微信小程序实现星级评分与展示
    这篇文章主要为大家详细介绍了微信小程序实现星级评分与展示,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的 ... [详细]
  • 微信小程序地图实现展示线路的方法
    这篇文章将为大家详细讲解有关微信小程序地图实现展示线路的方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所 ... [详细]
  • 微信小程序学习笔记-3-问题
    一些在开发微信小程序中常见的问题页面渲染  微信小程序中规定所有页面上渲染出来的数据,包括文字和图片皆包含在在每个页面文件夹中的js文件中的page这个内置函数的参数data中, ... [详细]
  • 微信小程序如何实现列表的横向滑动
    小编这次要给大家分享的是微信小程序如何实现列表的横向滑动,文章内容丰富,感兴趣的小伙伴可以来了解一下,希望大家阅读完这篇文章之后能够有所 ... [详细]
  • 微信小程序导航跟随的实现方法
    本文介绍了在微信小程序中实现导航跟随的方法。通过设置导航的position属性和绑定滚动事件,可以实现页面向下滚动到导航位置时,导航固定在页面最上方;页面向上滚动到导航位置时,导航恢复到原始位置;点击导航可以平滑跳转到相应位置。代码示例也给出了具体实现方法。 ... [详细]
  • 微信小程序实现简易计算器功能_javascript技巧
    这篇文章主要为大家详细介绍了微信小程序实现简易计算器功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的 ... [详细]
  • 小程序中如何实现弹出菜单功能
    这篇文章给大家分享的是有关小程序中如何实现弹出菜单功能的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需求点击 ... [详细]
  • 以前都是用php开发微信公众号,很少有人用java来做,我用java来做了一个微信小程序的后台,前端是一个微信商城,没有开发完,但是已经封装了取得openid,wechat-master目录 ... [详细]
  • 今天就跟大家聊聊有关怎么在微信小程序中监听全局变量,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • 本文主要介绍关于微信小程序,小程序,今日头条,新闻,前端的知识点,对【仿今日头条实时新闻微信小程序项目源码】和【自己怎么弄微信小程序】有兴趣的朋友可以看下由【叶绿体不忘呼吸】投稿的技术文章,希望该技术 ... [详细]
  • 微信小程序适合做什么?微信小程序详情介绍
    微信小程序是腾讯新开发的功能,目前备受关注的,还有很多用户不是很了解,不知道这个微信小程序适合什么,因此就让小编给大家讲讲吧。微信小程序详情介绍小程序也有很多功能,如果你按照之前的 ... [详细]
  • 微信小程序下拉触发onPullDownRefresh函数调用,但是问题在这里面的实现并没有生效。原因:微信小程序默认不支持下拉也就是说想要支持下拉刷新的功能,还必须得要在app.jso ... [详细]
  • 山雨欲来风满楼,最近微信小程序相关开发文章吹遍大江南北,亦有摧枯拉朽万象更新之势。问小程序形为何物,直教IT众生怡情悦性高潮迭起。作为一名有着远大理想“包袱”与互联网变革“使命感”的测试工程师,我再 ... [详细]
author-avatar
手机用户2502884005
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有