完全卸载和重新加载伪造查看器
Posted
技术标签:
【中文标题】完全卸载和重新加载伪造查看器【英文标题】:Completely unload and reload forge viewer 【发布时间】:2018-05-12 22:02:18 【问题描述】:我在 Angular 5 应用程序上使用 Forge Viewer。
有没有办法完全卸载查看器,以便以后重新加载?
我有以下代码来卸载查看器:
if (this.viewer && this.viewer.running)
this.viewer.tearDown();
this.viewer.finish();
this.viewer = null;
而且我还有每次用户进入页面时加载查看器的代码。
目前,当用户导航到应用程序上的不同页面时,该代码会被执行,但当用户返回到包含查看器的页面时,它会在查看器所在的位置显示一个灰色框。
这里是重现该问题的 github 存储库:https://github.com/theivanaguilar/forge-viewer-reload
我错过了什么吗?
【问题讨论】:
【参考方案1】:静态方法Autodesk.Viewing.Initializer
只能调用一次,以后不会返回。每次加载组件时都需要调用所有其他查看器方法。所以你需要稍微重构一下你的代码。
我的应用正在使用 React 和 I save a boolean in the appState 来避免调用该 Initializer 两次(如果它已经被初始化)。
希望对你有帮助
【讨论】:
嗨 Phillipe,我有一个应用程序可以在其中拆下查看器并再次加载模型。它有效,但问题是模型的 ID 每次都在不断增加。我期待在拆卸之后,id 会重置为 1。为什么查看器会记住在拆卸之前添加了多少观众。我应该怎么做才能重置 ID?谢谢@Phillipe 是的,我希望它也会被重置...我不再在 adsk 工作,所以我建议您寻求专门的支持,我的回答会非常简短:) 上下文太少了有关您的工作流程的信息以提供更准确的建议,但首先您可以在不完全拆卸查看器的情况下卸载模型,其次我不会依赖 API 生成的模型 ID,而是在加载新模型时,您可以使用 API 事件来设置您自己的 guid 或您想要附加到模型对象的任何数据。干杯! 嗨菲利普,感谢您的意见。我们正在尝试设置自己的 id 的方法。我希望它会起作用。 这绝对有效,使用了很长时间。我在“Autodesk.Viewing.MODEL_ROOT_LOADED_EVENT”中抓取模型,然后做一些简单的事情,例如 model.myId = “unique-guid”以上是关于完全卸载和重新加载伪造查看器的主要内容,如果未能解决你的问题,请参考以下文章