+
95
-

回答

在 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 后将更新同步到你的数据模型中。

网友回复

我知道答案,我要回答