NodesRef

用于获取 QML 节点信息的对象

方法

NodesRef.fields(Object fields)

获取节点的相关信息。需要获取的字段在fields中指定。返回值是 nodesRef 对应的 selectorQuery

SelectorQuery NodesRef.boundingClientRect(NodesRef.boundingClientRectCallback callback)

添加节点的布局位置的查询请求。相对于显示区域,以像素为单位。其功能类似于 DOM 的 getBoundingClientRect。返回 NodesRef 对应的 SelectorQuery

SelectorQuery NodesRef.scrollOffset(NodesRef.scrollOffsetCallback callback)

添加节点的滚动位置查询请求。以像素为单位。节点必须是 scroll-view 或者 viewport,返回 NodesRef 对应的 SelectorQuery

SelectorQuery NodesRef.context(NodesRef.contextCallback callback)

添加节点的 Context 对象查询请求。目前支持 VideoContextCanvasContextLivePlayerContextMapContext 的获取。

.boundingClientRect

SelectorQuery NodesRef.boundingClientRect(function callback)

添加节点的布局位置的查询请求。相对于显示区域,以像素为单位。其功能类似于 DOM 的 getBoundingClientRect。返回 NodesRef 对应的 SelectorQuery

参数

function callback

回调函数,在执行 SelectorQuery.exec 方法后,节点信息会在 callback 中返回。

参数

Object res

属性类型说明
idstring节点的 ID
datasetObject节点的 dataset
leftnumber节点的左边界坐标
rightnumber节点的右边界坐标
topnumber节点的上边界坐标
bottomnumber节点的下边界坐标
widthnumber节点的宽度
heightnumber节点的高度

返回值

SelectorQuery

示例代码

  1. Page({
  2. getRect() {
  3. qq.createSelectorQuery().select('#the-id').boundingClientRect(function (rect) {
  4. rect.id // 节点的ID
  5. rect.dataset // 节点的dataset
  6. rect.left // 节点的左边界坐标
  7. rect.right // 节点的右边界坐标
  8. rect.top // 节点的上边界坐标
  9. rect.bottom // 节点的下边界坐标
  10. rect.width // 节点的宽度
  11. rect.height // 节点的高度
  12. }).exec()
  13. },
  14. getAllRects() {
  15. qq.createSelectorQuery().selectAll('.a-class').boundingClientRect(function (rects) {
  16. rects.forEach(function (rect) {
  17. rect.id // 节点的ID
  18. rect.dataset // 节点的dataset
  19. rect.left // 节点的左边界坐标
  20. rect.right // 节点的右边界坐标
  21. rect.top // 节点的上边界坐标
  22. rect.bottom // 节点的下边界坐标
  23. rect.width // 节点的宽度
  24. rect.height // 节点的高度
  25. })
  26. }).exec()
  27. }
  28. })

.context

SelectorQuery NodesRef.context(function callback)

添加节点的 Context 对象查询请求。目前支持 VideoContextCanvasContextLivePlayerContextMapContext 的获取。

参数

function callback

回调函数,在执行 SelectorQuery.exec 方法后,返回节点信息。

参数

Object res

属性类型说明
contextObject节点对应的 Context 对象

返回值

SelectorQuery

示例代码

  1. Page({
  2. getContext() {
  3. qq.createSelectorQuery().select('.the-video-class').context(function (res) {
  4. console.log(res.context) // 节点对应的 Context 对象。如:选中的节点是 <video> 组件,那么此处即返回 VideoContext 对象
  5. }).exec()
  6. }
  7. })

.fields

NodesRef.fields(Object fields)

获取节点的相关信息。需要获取的字段在fields中指定。返回值是 nodesRef 对应的 selectorQuery

参数

Object fields
属性类型默认值必填说明最低版本
idbooleanfalse是否返回节点 id
datasetbooleanfalse是否返回节点 dataset
rectbooleanfalse是否返回节点布局位置(left right top bottom
sizebooleanfalse是否返回节点尺寸(width height
scrollOffsetbooleanfalse否 是否返回节点的 scrollLeft scrollTop,节点必须是 scroll-view 或者 viewport
propertiesArray.<string>[]指定属性名列表,返回节点对应属性名的当前属性值(只能获得组件文档中标注的常规属性值,id class style 和事件绑定的属性值不可获取)
computedStyleArray.<string>[]指定样式名列表,返回节点对应样式名的当前值
contextbooleanfalse是否返回节点对应的 Context 对象

注意

computedStyle 的优先级高于 size,当同时在 computedStyle 里指定了 width/height 和传入了 size: true,则优先返回 computedStyle 获取到的 width/height。

示例代码

  1. Page({
  2. getFields() {
  3. qq.createSelectorQuery().select('#the-id').fields({
  4. dataset: true,
  5. size: true,
  6. scrollOffset: true,
  7. properties: ['scrollX', 'scrollY'],
  8. computedStyle: ['margin', 'backgroundColor'],
  9. context: true,
  10. }, function (res) {
  11. res.dataset // 节点的dataset
  12. res.width // 节点的宽度
  13. res.height // 节点的高度
  14. res.scrollLeft // 节点的水平滚动位置
  15. res.scrollTop // 节点的竖直滚动位置
  16. res.scrollX // 节点 scroll-x 属性的当前值
  17. res.scrollY // 节点 scroll-y 属性的当前值
  18. // 此处返回指定要返回的样式名
  19. res.margin
  20. res.backgroundColor
  21. res.context // 节点对应的 Context 对象
  22. }).exec()
  23. }
  24. })

.scrollOffset

SelectorQuery NodesRef.scrollOffset(function callback)

添加节点的滚动位置查询请求。以像素为单位。节点必须是 scroll-view 或者 viewport,返回 NodesRef 对应的 SelectorQuery

参数

function callback

回调函数,在执行 SelectorQuery.exec 方法后,节点信息会在 callback 中返回。

参数

Object res

属性类型说明
idstring节点的 ID
datasetObject节点的 dataset
scrollLeftnumber节点的水平滚动位置
scrollTopnumber节点的竖直滚动位置

返回值

SelectorQuery

示例代码

  1. Page({
  2. getScrollOffset() {
  3. qq.createSelectorQuery().selectViewport().scrollOffset(function (res) {
  4. res.id // 节点的ID
  5. res.dataset // 节点的dataset
  6. res.scrollLeft // 节点的水平滚动位置
  7. res.scrollTop // 节点的竖直滚动位置
  8. }).exec()
  9. }
  10. })