2013-11-29 4 views
0

Мне нужно определить событие мыши click для каждой ячейки. Я использовал событие cell:pointerup; но это событие срабатывает, когда я меняет положение ячеек тоже. Как я могу отличить эти 2 события?JointJS - событие события нажатия кнопки мыши событие изменения позиции ячейки

Заранее спасибо.

ответ

5

Что вы можете сделать, это создать пользовательский вид элемента и отчетливый щелчок перетаскивать, проверяя, было ли вызвало pointermove события между pointerdown и pointerup событиями.

var ClickableView = joint.dia.ElementView.extend({ 
    pointerdown: function() { 
    this._click = true; 
    joint.dia.ElementView.prototype.pointerdown.apply(this, arguments); 
    }, 
    pointermove: function() { 
    this._click = false; 
    joint.dia.ElementView.prototype.pointermove.apply(this, arguments); 
    }, 
    pointerup: function (evt, x, y) { 
    if (this._click) { 
     // triggers an event on the paper and the element itself 
     this.notify('cell:click', evt, x, y); 
    } else { 
     joint.dia.ElementView.prototype.pointerup.apply(this, arguments); 
    } 
    } 
}); 

А потом скажите joint.dia.Paper использовать вид.

var paper = new joint.dia.Paper({ 
    // el, width, height etc. 
    elementView: ClickableView 
}); 

Сценарий можно найти here.

+0

Большое вам спасибо @Roman за вашу помощь; Оно работало завораживающе! – talha06

+0

Что делать, если я хотел применить этот вид только к определенной модели, а не ко всему на бумаге? Как мне продолжить? – madagalbiati

+0

Ничего, получилось ... – madagalbiati

Смежные вопросы