文档手册

behavior: virtual-list

2024-07-18 16:36:23

behavior: virtual-list

此帮助程序行为实现了“滑动窗口”可滚动列表的逻辑。

它用于向用户显示列表中可能存在的大量记录。此行为在滑动窗口中使用始终固定数量的 DOM 元素。

Elements

默认情况下,该行为不会应用于任何元素 - 您应该在 CSS 中显式分配它:

div.list {
 behavior:virtual-list;
 overflow-y:scroll;
}

Attributes

 不适用。

但该行为使用 vertical-align: top | bottom CSS 属性来确定初始呈现。如果是 vertical-align: bottom ,则列表最初会滚动到末尾。

Events

结合标准事件集(鼠标、键盘、焦点)行为:virtual-list 生成:

  • "contentrequired" - 当行为因滚动而需要更多元素时生成。

event.data 包含以下结构

{ 
 where:int   // 0 - to replace current content, -1 - to add before first element, 1 - to add after last element
 start:int,  // index of first record
 length:int, // that number of records required to be added or replaced by script.
}

通过处理该事件,脚本将填充请求的元素数,并在数据字段中返回以下对象:

{
 morebefore: int, // estimated number of items before the buffer start
 moreafter: int // estimated number of records after the buffer end
}

此信息用于正确设置滚动条。

Value

 不适用

Methods

element.vlist.navigateTo(to: int | string)

滚动到给定的记录,其中 to 为:

  • integer - 绝对记录数;

  • “开始” - 第一张唱片;

  • “结束” - 最后一条记录;

  •  “pagenext” - 下一页;

  • “pageprior” - 上一页;

  • “itemnext” - 下一条记录;

  • “itemprior” - 以前的记录;

advanceTo()

element.vlist.advanceTo(recNo: int) : Element`

滚动到给定的记录编号。默认情况下,它执行动画滚动。

返回表示记录的 DOM 元素。

scrollBy()

element.vlist.scrollBy(pixels) : boolean`

按给定的 CSS 像素数滚动。默认情况下,它执行动画滚动。

如果发生 actuall 滚动,则返回 true。

Properties

firstVisibleItem

element.vlist.firstVisibleItem: Element

只读,对缓冲区中第一个可见项的引用。

lastVisibleItem

element.vlist.lastVisibleItem: Element

只读,对缓冲区中最后一个可见项的引用。

firstVisibleItemIndex

element.vlist.firstVisibleItemIndex: Element

只读,记录集中第一个可见项的索引。

lastVisibleItemIndex

element.vlist.lastVisibleItemIndex: int

只读,记录集中最后一个可见项的索引。

firstBufferIndex

element.vlist.firstBufferIndex: int

只读,即在滑动缓冲区中的第一个元素之前预期的许多记录。

lastBufferIndex

element.vlist.lastBufferIndex: int

只读,firstBufferIndex - lastBufferIndex + 1 是滑动窗口的当前大小。

itemsBefore

element.vlist.itemsBefore: int

读写,在缓冲区(滑动窗口)之前报告的项目数。

提示

当新记录出现在滑动窗口之前/之后时,为 itemsBefore/After 分配新值。

itemsAfter

element.vlist.itemsAfter: int`

读写,缓冲区(滑动窗口)后报告的项目数。

itemsTotal

element.vlist.itemsTotal: int

只读,总共有多少个项目 (itemsBefore + element.children.length + itemsAfter) 。

slidingWindowSize

element.vlist.slidingWindowSize: int`

读-写,滑动窗口中有多少个项目(DOM 元素)。 提示

理想情况下,它应该是预期可见项(代表每条记录的 DOM 元素)数量的两倍