如何解决在长链接上正确使用 addProperty()
如何在长链接上使用 addproperty() 来显示短链接文本?
具体来说,我想从:
链接到公司 https://en.wikipedia.org/wiki/Autodesk_Media_and_Entertainment
到:
在属性面板中可以这样做吗?
解决方法
内置属性面板会尝试检测“看起来像 URL”的属性值并将它们转换为实际的 <a>
链接,但它并没有让您为这些链接指定不同的名称。
为了实现您想要的,您必须子类化 ViewerPropertyPanel
类并覆盖负责将属性记录转换为实际 HTML 元素的 displayProperty
方法:
displayProperty(property,parent,options) {
const [nameEl,valueEl] = super.displayProperty(property,options);
if (property.value.startsWith('https://')) {
valueEl.innerHTML = `<a href="${property.value}">Link</a>`;
}
}
这是一个完整的查看器扩展,它实现了自定义属性面板,包括。链接自定义:
class CustomPropertyPanelExtension extends Autodesk.Viewing.Extension {
constructor(viewer,options) {
super(viewer,options);
}
async load() {
this.viewer.addEventListener(Autodesk.Viewing.EXTENSION_LOADED_EVENT,(ev) => {
if (ev.extensionId === 'Autodesk.PropertiesManager') {
const ext = this.viewer.getExtension('Autodesk.PropertiesManager');
ext.setPanel(new CustomPropertyPanel(this.viewer));
}
});
return true;
}
unload() {
return true;
}
}
class CustomPropertyPanel extends Autodesk.Viewing.Extensions.ViewerPropertyPanel {
constructor(viewer) {
super(viewer);
}
displayProperty(property,options) {
const [nameEl,options);
if (property.value.startsWith('https://')) {
valueEl.innerHTML = `<a href="${property.value}">Link</a>`;
}
}
setProperties(props,options) {
super.setProperties(props,options);
this.addProperty('Prop A','https://forge.autodesk.com','Category 1');
}
setAggregatedProperties(props) {
super.setAggregatedProperties(props);
this.addProperty('Prop A','Category 1');
}
}
Autodesk.Viewing.theExtensionManager.registerExtension('CustomPropertyPanelExtension',CustomPropertyPanelExtension);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。