2017-05-15 4 views
0

J'utilise Office-Fabric-Ui et sa fonctionnalité de boîte de dialogue.Supprimer le gestionnaire de clic de la superposition de dialogue de matrice

var template = $("<div id='something'>This is modal dialog content</div>"); 
var uidialog = new fabric["Dialog"](template[0]); 

Maintenant, uidialog a _overlay variables, le clic de ce _overlay les uidialog se ferme, mais nous ne voulons pas la boîte de dialogue pour fermer le clic et essayer de supprimer les gestionnaires sur _overlay

J'ai essayé de nombreuses solutions certains d'entre eux sont, mais encore incapables d'enlever les gestionnaires de l'élément de recouvrement:

Solution 1

fabric.Dialog.prototype.RemoveOverlayClick = function() { 
    this._overlay.overlayElement.removeEventListener("click", this.close.bind(this)); 
    this._overlay.overlayElement.removeEventListener("click", this._overlay.hide.bind(this._overlay)); 
    this._overlay.overlayElement.removeEventListener("click", this.__proto__.close.bind(this.__proto__)); 
    this._overlay.overlayElement.removeEventListener("click", fabric.Dialog.prototype.close.bind(fabric.Dialog.prototype)); 
} 
uidialog.RemoveOverlayClick(); 

Solution 2

uidialog._overlay.overlayElement.removeEventListener("click", uidialog.__proto__.close.bind(this.__proto__)); 
uidialog._overlay.overlayElement.removeEventListener("click", fabric.Dialog.prototype.close.bind(fabric.Dialog.prototype)); 

Quelqu'un peut-il suggérer comment supprimer des gestionnaires d'événements de clic sur fabric.Overlay?

Répondre

0

Je n'ai pas réussi à removeEventHandler pour le clic, mais j'ai utilisé cloneNode pour que le dialogue ne se ferme pas lors du clic de superposition.

var _dialogOverlay = uidialog._overlay.overlayElement.cloneNode(); 
document.body.appendChild(_dialogOverlay); 
uidialog._overlay.overlayElement.style.display = 'none';