微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在长链接上正确使用 addProperty()

如何解决在长链接上正确使用 addProperty()

如何在长链接上使用 addproperty()显示链接文本?

具体来说,我想从:

链接到公司 https://en.wikipedia.org/wiki/Autodesk_Media_and_Entertainment

到:

链接到公司 Link

属性面板中可以这样做吗?

解决方法

内置属性面板会尝试检测“看起来像 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 举报,一经查实,本站将立刻删除。