在 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 后将更新同步到你的数据模型中。
网友回复
js如何流式输出ai的回答并折叠代码块,点击代码块右侧可预览代码?
ai大模型如何将文章转换成可视化一目了然的图片流程图图表?
大模型生成html版本的ui原型图和ppt演示文档的系统提示词怎么写?
rtsp视频直播流如何转换成websocket流在h5页面上观看?
为啥coze会开源工作流agent coze studio?
如何检测网页是通过收藏夹打开的?
python如何实现类似php的http动态脚本请求处理响应代码?
js如何实现类似php的http动态脚本请求处理响应代码?
trae与solo有啥区别不同?
vue如何让ai动态生成问卷调查多步骤表单式收集基础信息自动规划执行任务?