提交 cf0870e2 编写于 作者: W wanganxp

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

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