Ho sviluppato un piccolo widget javscript per trasformare alcuni blocchi nidificati <ul>
in un browser in stile Windows Explorer. Di recente ho imparato a conoscere il modello letterale oggetto e ha deciso di dare un andare, così l'organizzazione del mio codice è qualcosa di simile:modello letterale di oggetti javascript con più istanze
var myExplorer = {
init : function(settings) {
myExplorer.config = {
$wrapper : $('#explorerCategories'),
$contentHolder : $j('#categoryContent'),
loadingImg : '<img src="../images/standard/misc/ajax_loader.gif" alt="loading" class="loading" />'
}
// provide for custom configuration via init()
if (settings && typeof(settings) == 'object') {
$.extend(myExplorer.config, settings);
}
// some more code...
},
createExpanderLink : function() {
// more code
},
anotherMethod : function() {
// etc
}
}
Poi nella mia pagina ho impostato il mio Explorer con:
$j(function() {
myExplorer.init();
}
Tutto questo va bene comunque. Il problema è quando voglio avere più di uno di questi widget di stile Explorer sulla stessa pagina. Ho provato a passare nelle diverse impostazioni:
$j(function() {
// first instance
myExplorer.init();
//second instance
var settings = {
$wrapper : $('#explorerCategories2'),
$contentHolder : $j('#categoryContent2')
}
myExplorer.init(settings);
}
Ma questo sovrascrive semplicemente le valli di configurazione per la prima istanza che rompe efficacemente. Sto iniziando a rendermi conto che il modello letterale dell'oggetto non è la strada da percorrere qui, ma non sono sicuro di cosa sia. Qualcuno può offrire qualche suggerimento?
Perdona la mia ignoranza, ma è giusto che quando si utilizza questo modello, io debba dichiarare tutte le funzioni interne prima di utilizzarle nella funzione circostante myExplorer. Mi sono un po 'confuso dal tuo // codice di init qui comment. – benb