在 GoJS 中,如果你想要设置 TextBlock 可以编辑(editable),并且在编辑完成后将更新同步到 model 中,你可以通过以下步骤实现:
设置 TextBlock 可编辑: 使用 GoJS 中的 TextEditingTool,可以使 TextBlock 可编辑。你需要在 TextBlock 的模板中设置 editable: true。
$(go.TextBlock, { editable: true, // 其他属性和样式 }, new go.Binding("text", "text").makeTwoWay() // 绑定到数据模型的文本属性,并启用双向绑定 )
在上面的示例中,editable: true 允许用户编辑 TextBlock。
双向绑定到数据模型: 确保你的 TextBlock 绑定了数据模型中的文本属性,并启用了双向绑定。这样当用户编辑 TextBlock 时,修改将自动同步到数据模型中。
new go.Binding("text", "text").makeTwoWay()
这段代码将 TextBlock 的文本内容与数据模型中名为 "text" 的属性双向绑定,确保任何编辑都会更新到模型中。
保存更新到模型: 在 GoJS 应用中,你可能会监听 TextBlock 编辑完成的事件,然后手动保存更新到模型中。例如,你可以监听 TextEditingTool 的 TextEdited 事件:
myDiagram.toolManager.textEditingTool.textEdited = function(tb, oldstr, newstr) { // 在这里更新你的数据模型 // 例如,假设 node 是你的节点对象 myDiagram.model.setDataProperty(node.data, "text", newstr); };
上面的代码片段中,textEdited 事件处理程序在文本编辑完成时调用,你可以在这里更新数据模型中对应节点的文本属性。
通过这些步骤,你可以实现在用户编辑 GoJS TextBlock 后将更新同步到你的数据模型中。
网友回复