You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GoJS从v1.7.14升级到v2.2.17后双击编辑节点名称报错

GoJS v1.7升级到v2.2后双击编辑节点名称失效的解决思路

核心原因分析

错误TypeError: c.show is not a function指向GoJS编辑器激活逻辑,本质是v2.x对文本编辑API做了破坏性重构,v1.x的自定义编辑器配置或模板写法在v2.x中不再兼容。

具体解决步骤

  • 检查节点模板的文本编辑配置
    v1.x中通常通过设置TextBlock.editor指定编辑器:

    // v1.x 旧写法
    $(go.TextBlock, {
      editor: new MyCustomEditor(), // 自定义编辑器实例
      editable: true
    })
    

    v2.x中已移除TextBlock.editor属性,改用textEditor,且默认内置编辑器无需手动实例化,只需开启editable:

    // v2.x 正确写法
    $(go.TextBlock, {
      editable: true,
      textEditor: new go.TextEditor() // 如需自定义,基于官方TextEditor基类扩展
    })
    
  • 适配自定义文本编辑器API
    如果之前实现了自定义编辑器,v2.x要求编辑器类需实现TextEditor接口,核心激活方法从show改为activate。原自定义编辑器的show逻辑需迁移:

    class MyCustomEditor extends go.TextEditor {
      activate(textBlock, reason) {
        // 替代原show方法的激活逻辑
        // 处理文本编辑框的显示、内容填充、焦点获取等操作
      }
    }
    
  • 移除旧版兼容代码
    若代码中存在手动调用editor.show()的逻辑,需全部替换为v2.x的textEditor.activate()方式,避免调用已废弃的show方法。

  • 验证Angular环境的Zone.js交互
    错误堆栈包含Zone.js调用,若在Angular项目中,可尝试将GoJS编辑器初始化逻辑包裹在NgZone.runOutsideAngular中,避免Zone.js干扰GoJS的DOM操作:

    this.ngZone.runOutsideAngular(() => {
      // 图表或编辑器相关初始化逻辑
    });
    

内容的提问来源于stack exchange,提问作者Roohi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 21:12:16