首页 > 解决方案 > 如何从 JointJS 元素中的 prop 读取值?

问题描述

我尝试从 JointJS 元素中读取道具。我可以看到它被添加了,但我不知道如何读取该值。

var uml = joint.shapes.uml;

var state = new uml.State({
  name: "some name",
  prop: { myId: "some id" },
  events: ["event1", "event2"],
  attrs: {
    ".uml-state-body": {
      fill: "rgba(48, 208, 198, 0.1)",
      stroke: "rgba(48, 208, 198, 0.5)",
      "stroke-width": 1.5
    },
    ".uml-state-separator": {
      stroke: "rgba(48, 208, 198, 0.4)"
    }
  }
});

this.graph.addCell(state);

这不起作用

this.paper.on("element:pointerup ", function(elementView) {
  var id = elementView.model.get("myId");
});

标签: javascriptjointjs

解决方案


你真的很亲近... ;)

实际代码的解决方案

prop在getter中使用了完整路径get("prop").myId

比你的:elementView.model.get("prop").myId

https://codepen.io/Michal-Miky-Jankovsky/pen/PVXaZy

为什么?

来自构造函数的所有对象键都是getter 的“属性”

更好的解决方案...

您可以直接在模型上设置“myId”:

var state = new uml.State({
   myId: "some id",
   ...
});

比预期的那样可用于吸气剂:

elementView.model.get("myId")

推荐阅读