如何在GoJS中通过一次计算绑定多个属性?
解决GoJS单次计算绑定多个组件属性的问题
当然可以实现,不用重复执行复杂计算。你可以通过单个绑定结合自定义属性赋值的方式,只执行一次计算就把多个结果应用到组件的对应属性上:
$(go.TextBlock, { text: 'refresh', // 默认文本 stroke: 'red', // 默认颜色 }, new go.Binding("", "", (data, target) => { // 这里只执行一次复杂计算 const calculatedProps = (() => { // 你的复杂计算逻辑写在这里 return { text: '计算生成的文本内容', stroke: '#2ecc71' }; })(); // 直接将计算结果赋值给目标组件的对应属性 target.text = calculatedProps.text; target.stroke = calculatedProps.stroke; // 返回null即可,因为我们已经手动完成了属性更新 return null; }) );
关键说明:
- 这里的Binding第一个参数传空字符串,意味着不绑定到特定的单一属性,转而利用转换函数的第二个参数
target(即当前的TextBlock实例)来直接设置属性。 - 复杂计算逻辑只在转换函数内执行一次,生成包含多个属性的对象后,分别赋值给组件的对应属性,彻底避免重复计算。
- 组件的默认值会被保留,只有当绑定触发(比如数据更新)时,才会用计算结果覆盖默认值。
内容的提问来源于stack exchange,提问作者mikenlanggio
相关产品推荐
相关产品推荐

