/ / Ako získať inštanciu modálneho dialógu prostredníctvom programového API Bootstrap? - javascript, twitter-bootstrap-3

Ako získať inštanciu modálneho dialógu pomocou programového rozhrania Bootstrap API? - javascript, twitter-bootstrap-3

Scenár, ktorý sa snažím vyriešiť, je zakázať, aby klávesová skratka zatvorila dialógové okno PO modál bol instancovaný (dialóg je nastavený do stavu načítania). Inými slovami, potom, čo som inštancoval svoj modál takto:

(this.$el).modal("show");

Používateľ stlačí tlačidlo Odoslať a dialógové okno je nastavené na stav načítania a chcem vypnúť tlačidlo Escape, pretože používateľ by nemal byť schopný zavrieť dialógové okno v tomto stave.

Snažil som sa toto:

(this.$el).modal({ keyboard: false });

Ale nefunguje to, zdá sa, že Bootstrap načíta tieto možnosti iba vtedy, keď vyvolá modálne dialógové okno ...

Moja otázka teda znie, či je možné sa chytiťaktuálnej modálnej inštancie bootstrap, aby bolo možné zmeniť objekt možností? Podľa dokumentácie by to malo byť možné (alebo som zle pochopil dokumenty?), Ale neviem prísť na to ako.

Tu je to, čo sa píše v dokumentácii (http://getbootstrap.com/javascript/): Ak chcete získať konkrétnu inštanciu doplnku, načítajte ju priamo z prvku:

$("[rel="popover"]").data("popover").

Nejaké nápady?

odpovede:

0 pre odpoveď č. 1

Dobre, prišiel som na to, ako po nejakom experimentovaní získať inštanciu modálneho dialógu:

var bootstrapModalInstance = this.$el.data("bs.modal");

A potom by som mohol nastaviť možnosti na inštancii takto:

bootstrapModalInstance.options.keyboard = !this.model.isSyncing;

Je smutné, že to problém nevyriešilo, pretože poslucháč únikovej klávesy-udalosti-udalosti je nastavený počas modálnej inštancie takto:

Z bootstrap.js

 Modal.prototype.escape = function () {
if (this.isShown && this.options.keyboard) { // The event listener is setup on initalization
this.$element.on("keydown.dismiss.bs.modal", $.proxy(function (e) {
e.which == 27 && this.hide() // !!! Does not check the instance options.keyboard flag status, so I had to add && this.options.keyboard here
}, this))
} else if (!this.isShown) {
this.$element.off("keydown.dismiss.bs.modal")
}
}

A ako som napísal v komentári ku kódu vyššie, pridanie možnosti instance.keyboard v poslucháčovi udalostí problém vyriešilo.