从 dbid 获取片段 ID
Posted
技术标签:
【中文标题】从 dbid 获取片段 ID【英文标题】:Getting fragment ids from a dbid 【发布时间】:2019-10-10 23:49:09 【问题描述】:类型定义、文档和查看器行为之间看似不一致的问题让我有点挣扎。
我已经为颜色元素编写了一个简单的扩展(无论如何我都无法使用它,但那是 different question)。
当我尝试使用InstanceTree#enumNodeFragments
方法获取给定节点的片段时,我得到一个空数组:
getFragmentsForNode(dbId: number): number[]
const fragments: number[] = [];
this.viewer.model.getInstanceTree().enumNodeFragments(dbId, (fragId) => fragments.push(fragId));
return fragments;
文档没有说明此回调的预期参数,但从在线示例中我猜签名类似于以下内容:
enumNodeFragments(dbId: number, callback: (fragId: number) => void, recursive?: boolean): void;
打字稿定义令人困惑,因为它将node: any
列为第一个参数,这意味着它可能不是 id 而是其他东西。
当我对任何元素运行此命令时,我总是得到一个空数组,这有点令人费解,因为无法访问片段我无法真正设置颜色等。
【问题讨论】:
【参考方案1】:很遗憾,我无法使用有效的 dbid 和模型重现该问题 - 请参阅实时示例 here
viewer.model.getInstanceTree().enumNodeFragments(dbId, fragId=> console.log(fragId));
您是否提供了有效的 dbid?
【讨论】:
我从一个选择事件中得到了 dbid,所以它肯定是有效的。以上是关于从 dbid 获取片段 ID的主要内容,如果未能解决你的问题,请参考以下文章
如果标签存在,beautifulsoup 从片段中获取最后一个标签
没有使用 navController.currentDestination?.id 获取当前片段 ID