@antmove/wx-alipay
Version:
transform wechat miniprogram to alipay miniprogram tool.
67 lines (58 loc) • 1.43 kB
JavaScript
function findRelationNode(node, p, type, isArray = false) {
// parent child ancestor descendant
const nodes = []
const _prcess = {
parent(_node) {
if (!_node || !_node.$parent) { return }
const _p = _node.$parent.$self.is || _node.$parent.$self.route
if (_p === p) {
return _node.$parent
}
},
child(_node) {
let _child = null
_node.$children
.forEach((child) => {
const _p = child.$self.is
if (_p === p) {
_child = child
if (!isArray) {
return _child
}
nodes.push(_child)
}
})
return _child
},
ancestor(__node) {
if (!__node) { return }
let _node = null
_node = _prcess.parent(__node)
if (!_node) {
_node = _prcess.ancestor(__node.$parent)
}
return _node
},
descendant(__node) {
let _node = null
_node = _prcess.child(__node)
if (!_node) {
__node.$children
.forEach((c) => {
_node = _prcess.child(c)
if (!_node) {
_node = _prcess.descendant(c)
}
})
}
return _node
},
}
const ret = _prcess[type](node)
if (isArray) {
if (type === 'parent' || type === 'ancestor') { return [ret] }
return nodes
}
return ret
}
module.exports = findRelationNode