He desarrollado un pequeño widget javscript para convertir algunos bloques anidados <ul>
en un explorador de estilo de Windows Explorer. He aprendido recientemente sobre el modelo de objeto literal y decidió darle una oportunidad, por lo que la organización de mi código es algo como esto:javascript objeto patrón literal con varias instancias
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
}
}
Luego, en mi página de configurar mi explorador con:
$j(function() {
myExplorer.init();
}
Todo esto funciona bien por cierto. El problema es cuando quiero tener más de uno de estos widgets de estilo explorador en la misma página. He intentado pasar en las diferentes configuraciones:
$j(function() {
// first instance
myExplorer.init();
//second instance
var settings = {
$wrapper : $('#explorerCategories2'),
$contentHolder : $j('#categoryContent2')
}
myExplorer.init(settings);
}
Pero esto simplemente sobrescribe los valles de configuración para la primera instancia que rompe eficazmente. Estoy empezando a darme cuenta de que el patrón literal del objeto no es el camino correcto, pero no estoy seguro de qué es. ¿Alguien puede ofrecer alguna sugerencia?
Perdone mi ignorancia, pero ¿es correcto que al usar este patrón debo declarar todas las funciones internas primero antes de usarlas dentro de la función circundante myExplorer? Me puse un poco confundido por tu código // init aquí comentario. – benb