list


可滚动长列表。

<list> 标签内可包含多条 <cell>,适合用于长列表的展示。

<cell> 使用文档 cell

属性

属性名类型必填默认值说明
heightNumber必传 定义滚动区域的高度 注意: 1、<list> height="{{100}}" /> 这样传值才是Number类型 2、height为-1时,<list> 的可滚动区域高度为list放置点至页面底部
bottom-offsetNumber0距底部/右边多远时(单位cpx),触发 onBottom 事件
cstyleString自定义组件内联样式
to-elementString滚动到的元素,仅支持ref(web、weex端)
bounceBooleantrue上拉下拉是否回弹(仅支持web)
c-bind:scrolltobottomEventHandle滚动到底部,会触发 scrolltobottom 事件 返回事件对象: event.type= "scrolltobottom" event.detail = { direction }
c-bind:onscrollEventHandle滚动时触发, 返回事件对象: event.type = 'scroll' event.detail = {scrollLeft, scrollTop, scrollHeight, scrollWidth, deltaX, deltaY}

限制

  • 不允许相同方向的 <list> 或者 <scroller> 互相嵌套,换句话说就是嵌套的 <list>/<scroller> 必须是不同的方向。
    举个例子,不允许一个垂直方向的 <list> 嵌套的一个垂直方向的 <scroller> 中,但是一个垂直方向的 <list> 是可以嵌套的一个水平方向的 list 或者 <scroller> 中的。

示例

  1. <template>
  2. <view class="container">
  3. <list
  4. bottom-offset="{{bottomOffset}}"
  5. c-bind:scrolltobottom="onBottom"
  6. c-bind:onscroll="onScroll"
  7. height="{{-1}}"
  8. >
  9. <cell
  10. class="cell"
  11. c-for="{{lists}}"
  12. c-for-index="i"
  13. c-for-item="item"
  14. data-idx="{{i}}"
  15. >
  16. <view class="panel">
  17. <text class="text">{{item}}</text>
  18. </view>
  19. </cell>
  20. </list>
  21. </view>
  22. </template>
  23. <script>
  24. import cml from 'chameleon-api'
  25. const LOADMORE_COUNT = 4
  26. class List {
  27. data = {
  28. /**
  29. * list 配置 子元素必须是 cell 标签
  30. */
  31. bottomOffset: 20,
  32. lists: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  33. }
  34. methods = {
  35. onBottom(e) {
  36. cml.showToast({
  37. message: "loadmore",
  38. duration: 1000
  39. });
  40. setTimeout(() => {
  41. const length = this.lists.length
  42. for (let i = length; i < length + LOADMORE_COUNT; ++i) {
  43. this.lists.push(i + 1)
  44. }
  45. }, 800)
  46. },
  47. onScroll(e) {
  48. }
  49. }
  50. }
  51. export default new List();
  52. </script>
  53. <style scoped>
  54. .container {
  55. position: absolute;
  56. top: 88cpx;
  57. left: 0;
  58. right: 0;
  59. bottom: 0;
  60. }
  61. .panel {
  62. display: flex;
  63. width: 600cpx;
  64. height: 300cpx;
  65. margin-left: 75cpx;
  66. margin-top: 35cpx;
  67. margin-bottom: 35cpx;
  68. flex-direction: column;
  69. justify-content: center;
  70. border-width: 2px;
  71. border-style: solid;
  72. border-color: rgb(162, 217, 192);
  73. background-color: rgba(162, 217, 192, 0.2);
  74. }
  75. .text {
  76. font-size: 88cpx;
  77. text-align: center;
  78. color: #41B883;
  79. }
  80. </style>
  81. <script cml-type="json">
  82. {
  83. "base": {}
  84. }
  85. </script>

list  - 图1wx

list  - 图2web

list  - 图3native

Bug & Tip

  • <list>组件的父容器必须为可定位元素, <list>内容的布局由父容器决定。
  • <list> 中不可以使用 <textarea><video> 组件。
  • <list> 中不建议在<list>上加class改变样式,可以通过cstyle属性传入内联样式。
  • <list> 的子组件定位无效。