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
相关产品推荐
相关产品推荐

