You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

50 lines
1.3 KiB

2 years ago
class NodeUtil {
/**
* 获取组件内部节点位置信息单个
* @param component 组件实例
* @param selector {String} css选择器
* @returns boundingClientRect() 回调函数的值
*/
async getNodeRectFromComponent(component, selector) {
return await new Promise((resolve) => {
component
.createSelectorQuery()
.select(selector)
.boundingClientRect((res) => {
resolve(res);
}).exec();
});
}
/**
* 获取组件内部节点位置信息多个
* @param component 组件实例
* @param selector {String} css选择器
* @returns boundingClientRect() 回调函数的值
*/
async getNodesRectFromComponent(component, selector) {
return await new Promise((resolve) => {
component
.createSelectorQuery()
.selectAll(selector)
.boundingClientRect((res) => {
resolve(res);
}).exec();
});
}
async getNodeFieldsFromComponent(component, selector, fields) {
return await new Promise((resolve) => {
component
.createSelectorQuery()
.select(selector)
.fields(fields, (res) => {
resolve(res);
}).exec();
});
}
}
const nodeUtil = new NodeUtil();
export default nodeUtil;