提交 cf0870e2 编写于 作者: W wanganxp

提示uni不与调用页面绑定带来的问题

上级 465cce85
......@@ -2,13 +2,19 @@
<!-- UTSAPIJSON.getElementById.description -->
**注意:** \
本方法获取的元素,是页面栈栈顶的页面的元素,而不是执行本方法代码所在的页面的元素。\
因为uni是全局api,只有`this.$refs`才能和页面绑定。\
如果A页面被栈顶的B页面盖住,在A页面执行`uni.getElementById`会访问到B页面的元素。\
除非您确认清楚这个逻辑,否则不建议使用本方法。\
与页面绑定的获取元素的方式是`this.$refs`获取的对象再进一步as为element。[详见](../tutorial/idref.md#ref方式)
<!-- UTSAPIJSON.getElementById.param -->
`3.93+` 支持泛型,可通过 `uni.getElementById<ElementType>(id)` 获取指定类型的元素。对于组件有自带方法的情况,通过泛型指定具体的元素类型,就可以调用该类型组件的专用方法,比如unicloud-db组件。\
具体的组件元素类型,可查阅`组件文档/组件类型`获取。
**注意:** 该方法只能获取当前页面的元素(查询时,会首先获取当前页面,即:`getCurrentPages()` 获取的页面栈数组的最后一个页面),如果需要获取其他页面的元素,可通过`ref`获取指定页面的元素。
```html
<template>
<view>
......
......@@ -79,6 +79,8 @@ uni-app x提供了[uni.getElementById](../api/get-element.md)方法,返回的
通用的元素操作方法,比如getAttribute、setStyle,在Element上就可以操作。
但是由于本方法不与页面绑定,获取的是栈顶页面的element,所以可能发生预期外的情况,[详见](../api/get-element.md)
UniVideoElement 继承自 Element,拥有video专用的一批方法。
template区:
......@@ -101,7 +103,11 @@ uni.createVideoContext("vid")!.play()
uni-app x 虽然支持 `uni.createSelectorQuery()` API,传入选择器,可以拿到返回的NodesRef。但无法继续获取.context子对象。无法通过这种方式拿到context。
#### ref方式
其实this.$refs获取到的内置组件,通过as也可以转换为Element。但一般ref用于vue自定义组件。
其实`this.$refs`获取到的内置组件,通过as也可以转换为Element。
`uni.getElementById`相比,`this.$refs`方式与调用页面绑定,日常更推荐使用。
script区:
```js
(this.$refs['vid'] as UniVideoElement).play(); //但一般ref用于vue自定义组件
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册