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

GoJs如何仅用单个模板实现基于节点数据的模板片段条件渲染

GoJS单模板实现条件渲染方案

你可以通过给元素绑定visible属性实现单模板内的条件渲染,无需维护多套模板。实现逻辑如下:
将两种场景需要的所有元素都写入同一个模板,给对应元素新增visible属性的绑定,绑定到你用来做判断的节点属性上,通过转换函数控制显示逻辑即可。隐藏的元素不会占用面板布局空间,渲染效果和多模板方案完全一致。

示例代码如下,假设你用来做条件判断的节点属性为showAppleParam,可替换为你实际使用的属性名:

// 属性值为true时显示的4个元素
$(go.TextBlock, { row: 1, column: 0, font: '12px \'Open Sans\'', margin: 3, stroke: '#707070' }, 
  $localize`:@@step-view-4: Paramètres:`,
  new go.Binding('visible', 'showAppleParam')
),
$(go.TextBlock, { row: 1, column: 1, font: '12px \'Open Sans\'', margin: 3, stroke: '#707070' }, 
  new go.Binding('text', 'Apple'),
  new go.Binding('visible', 'showAppleParam')
),
$(go.TextBlock, { row: 2, column: 0, font: '12px \'Open Sans\'', margin: 3, stroke: '#707070' }, 
  'Input:',
  new go.Binding('visible', 'showAppleParam')
),
$(go.TextBlock, { row: 2, column: 1, font: '12px \'Open Sans\'', margin: 3, stroke: '#707070' }, 
  new go.Binding('text', 'InputValue'),
  new go.Binding('visible', 'showAppleParam')
),

// 属性值不为true时显示的2个元素
$(go.TextBlock, { row: 1, column: 0, font: '12px \'Open Sans\'', margin: 3, stroke: '#707070' }, 
  $localize`:@@step-view-4: Banana:`,
  new go.Binding('visible', 'showAppleParam', val => !val)
),
$(go.TextBlock, { row: 1, column: 1, font: '12px \'Open Sans\'', margin: 3, stroke: '#707070' }, 
  new go.Binding('text', 'BananaValue'),
  new go.Binding('visible', 'showAppleParam', val => !val)
),

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:42:01