我有两个类似于 http://gojs.net/latest/samples/flowchart.html 的面板 GoJs 图。我将对象从左侧面板拖放到主图中。如何获取/设置删除对象(如文本等)的属性值?我被困住了
myDiagram.addDiagramListener("ExternalObjectsDropped",
function (e) {
var part = e.subject;
console.log(e.subject);
});
控制台仅显示非常复杂的对象结构,但我不知道在哪里可以找到我正在搜索的值。我的主要目标是调整放置对象的一些 TextBlock 的大小。
最佳答案
首先,了解源图中的模型数据将被复制到目标图中的模型。因此,源中的节点数据对象具有的任何可枚举属性都应该出现在目标中创建的节点的节点数据对象上。
其次,为什么要在复制的节点中“调整某些 TextBlock 的大小”?如果它们的 TextBlock.text 属性是绑定(bind)到复制节点数据对象中的属性的数据,那么您真正想要做的是修改模型数据上的这些属性。所以你的“ExternalObjectsDropped”监听器可以这样做:
function(e) {
// according to the documentation e.subject in this case is
// the Diagram.selection, a Set of the copied Parts
e.subject.each(function(node) {
var model = e.diagram.model;
model.setDataProperty(node.data, "myProp1", ...);
model.setDataProperty(node.data, "myProp2", ...);
});
}
或者,如果您确实想要更改 GraphObject.desiredSize 或 TextBlock 的任何其他属性,您可以通过为每个 TextBlock 指定一个 GraphObject.name 并调用 Panel.findObject 来查找特定节点中的特定 TextBlock。
关于GoJS 在ExternalObjectsDropped 上获取删除的对象值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34746690/