0

リンクのクリック イベントを無効にしようとしています。これにより頂点が作成されますが、このイベントには別のロジックが必要です。これは私のモデルです:

var modelConexion = joint.dia.Link.extend({
  defaults: joint.util.deepSupplement({
    type: 'modelConexion',
    manhattan: true,
    attrs: {
    },
  }, joint.dia.Link.prototype.defaults),
});

私のカスタム LinkView:

var modelConexionView = joint.dia.LinkView.extend({
  pointerdown: function () {
    // LOGIC HERE
  },
});

だから..どのようにmodelConexionViewをmodelConexionに関連付けることができますか? modelConexion は、どのビューが使用されているかをどのように認識していますか?

4

3 に答える 3

0

モデルはインスタンス化されたときにビューに関連付けられるため、次のようなことをしたいと思うかもしれません:

var ModelConexion = joint.dia.Link.extend({
  defaults: joint.util.deepSupplement({
    type: 'modelConexion',
    manhattan: true,
    attrs: {
    },
  }, joint.dia.Link.prototype.defaults),
});

var ModelConexionView = joint.dia.LinkView.extend({
  pointerdown: function () {
    // LOGIC HERE
  },
});

var modelConexion = new ModelConexion();
var modelConexionView = new ModelConexionView({model: modelConexion});
于 2014-07-10T18:08:35.887 に答える
0

また、あなたが望む方法でビューを定義することもできます。その後、論文で、API http://jointjs.com/api#joint.dia.Paperで指定されているように使用されるリンクビューを定義します。

コンストラクターに渡されるオプション オブジェクトには、次のプロパティを含めることができます。

...
* linkView - object that is responsible for rendering a link model into the paper. Defaults to joint.dia.LinkView
* defaultLink - link that should be created when the user clicks and drags and active magnet (when creating a link from a port via the UI). Defaults to new joint.dia.Link
...

次に、 https://github.com/DavidDurman/joint/blob/master/src/joint.dia.link.jsで GitHub ソースを見て、pointerdownを探します。これは私の結果です:

  // custom element for link
  // ---------------------------------------------------------------------------
  joint.shapes.customLink = {};
  joint.shapes.customLink.Element = joint.dia.Link.extend({
    defaults: joint.util.deepSupplement({
      type: "customLink.Element",
      attrs: {},
    }, joint.dia.Link.prototype.defaults),
  });
  joint.shapes.customLinkView = joint.dia.LinkView.extend({
    pointerdown: function (evt, x, y) {
      var targetParentEvent = evt.target.parentNode.getAttribute("event");
      if (targetParentEvent && targetParentEvent === "remove") {

        // YOUR STUFF HERE FOR REMOVE

      } else {
        joint.dia.LinkView.prototype.pointerdown.apply(this, arguments);
      }
    },
  });
于 2014-08-23T22:30:14.577 に答える