如何锁定 JointJS 中的单个元素?

How to lock individual elements in JointJS?

我正在尝试找出如何锁定单个元素以防止用户移动它们。我不想阻止所有元素仅移动单个元素。

在我的例子中,我想阻止用户移动另一个元素(嵌入)内的元素。

以指针向下事件为例。以下代码不起作用,但是否有 "locked" 属性或类似的东西可以使用?

this.paper.on(
  "element:pointerdown",
  function(elementView) {
    elementView.model.set("locked", "true");
  }.bind(this)
);

我曾尝试使用以下代码使 "child" 元素成为非交互元素,但这会阻止用户从该元素创建 link 等元素。

this.paper = new joint.dia.Paper({
  interactive: function(cellView) {
    if (cellView.model.isElement()) {
      if (cellView.model.parent()) {
        return false;
      }
    }

    return true;
  },

找到了一个解决方案,该解决方案将使元素不可移动,但仍允许用户从元素创建 link。

this.paper = new joint.dia.Paper({
  interactive: function(cellView) {
    if (cellView.model.isElement()) {
      if (cellView.model.parent()) {
        return { elementMove: false };
      }
    }

    return true;
  },