2016-06-02 7 views
1

Ich habe viele Dialog Popups über viele Seiten verteilt, die jeweils unter Verwendung BoostrapDialogBootstrap-Dialog Globale Optionen?

BootstrapDialog.show({...}); 
or 
var x = new BootstrapDialog({...}); 

ich die „closeByBackdrop: true“ hinzufügen möchten Option auf alle von ihnen.
Gibt es eine Möglichkeit, einige Standardoptionen zu definieren? Ich bin auf der gleichen Linie wie jQuery ajaxSettings Denken(), wo Sie globale Optionen festlegen können (aber immer noch sie in jedem konkreten Fall außer Kraft setzen, wenn nötig)

$.ajaxSetup ({ 
    cache: false, 
    error: function(x, t, m){ 
     alert("Generic Error"); 
    } 
}); 

ich keine Informationen aus der Ferne zu einem globalen Zusammenhang finden cant't Optionen setzen überall ... was zu der Annahme führt, dass es so etwas nicht gibt. frage mich, ob jemand davon weiß ... oder noch besser, hat seinen eigenen Weg um dies zu erreichen.

Die offensichtliche Lösung ist manuell alle meine Dialoge zu gehen und die Option manuell hinzuzufügen, aber da dies die bevorzugte Weise ist, sollten sie ALLE arbeiten, ich möchte es nicht für jede Instanz angeben müssen.

würde Die andere Lösung erneut Code sein, sie alle meine eigenen Optionen Objekt zu akzeptieren, und sich nur das Objekt für jede Instanz:

$(document).ready(function(){ 

    modalOptions = {...}; 
});  

function openDialogX(){ 

    var dialogXOptions = modalOptions; 
    dialogXOptions.buttons = [...]; 
    dialogXOptions.title = "..."; 
    dialogXOptions.message = "..."; 

    var dialogX = new BootstrapDialog(dialogXOptions); 
} 

Es würde sie nicht zu haben, erneut Code schön Alle akzeptieren ein benutzerdefiniertes Optionsobjekt.

TL; DR:
Gibt es eine BoostrapDialog entspricht jQuery ajaxSettup() für Standardoptionen neu zu definieren. Wenn nicht, welche Lösungen haben Sie verwendet, um dies zu erreichen (wenn überhaupt).

Antwort

1

Sie tun haben Sie eine BootstrapDialog.defaultOptions um line 231 in the master repo. Verwenden Sie, dass die Standardeinstellungen zu ändern, was auch immer Sie brauchen:

$.extend(BootstrapDialog.defaultOptions, { 
    closable: true, 
    closeByBackdrop: true, 
    autodestroy: false 
}); 

und nehmen Sie profitieren von den neuen Einstellungen in allen Dialogen:

var myDialog = new BootstrapDialog({ 
    title: 'Example', 
    message: 'Sample text' 
}).open() 

Demo ->http://jsfiddle.net/ffj6r1b6/ (versuchen closeByBackdrop-false und wieder ändern (run)

+0

Das ist genial. Vielen Dank. Ps.s. ** Warum ist das nicht dokumentiert? ** Jetzt weiß ich, wonach ich suche Ich erhalte gültige Google-Ergebnisse ... Nun, 1 Ergebnis in einer nicht verwandten Frage. – Steve

+1

Hey @Steve, sry für die lange Verzögerung, danke für die Annahme der Antwort! Ich weiß nicht, warum es nicht dokumentiert ist, aber es ist sehr üblich für solche Plugins, dass sie eine ".defaultOptions" oder ".defaults" irgendeiner Art haben. Alle Bootstrap-Plugins haben sie auch. Du könntest "höher" gehen und alle Bootstrap-Mods dazu zwingen, verschiedene '.defaults' zu haben - schau einfach in der Quelle nach und tue wie oben. – davidkonrad

+0

gut zu wissen, danke;) – Steve