¿Cómo actualizo dinámicamente los artículos en un menú desplegable?¿Es posible reiniciar un menú desplegable de CKEditor/menú desplegable?
Tengo un complemento personalizado para CKEditor que rellena un menú desplegable con una lista de elementos que puedo insertar en mi textarea
.
Esta lista de elementos proviene de una matriz de Javascript llamada maptags
, que se actualiza dinámicamente para cada página.
var maptags = []
Esta lista de etiquetas se agrega a la lista desplegable la primera vez que haga clic en él por la función init:
. Mi problema es: ¿qué sucede si los elementos de esa matriz cambian a medida que el cliente cambia cosas en la página, cómo puedo volver a cargar esa lista en la matriz actualizada?
Aquí está mi código de CKEditor Plugin:
CKEDITOR.plugins.add('mapitems', {
requires: ['richcombo'], //, 'styles' ],
init: function (editor) {
var config = editor.config,
lang = editor.lang.format;
editor.ui.addRichCombo('mapitems',
{
label: "Map Items",
title: "Map Items",
voiceLabel: "Map Items",
className: 'cke_format',
multiSelect: false,
panel:
{
css: [config.contentsCss, CKEDITOR.getUrl(editor.skinPath + 'editor.css')],
voiceLabel: lang.panelVoiceLabel
},
init: function() {
this.startGroup("Map Items");
//this.add('value', 'drop_text', 'drop_label');
for (var this_tag in maptags) {
this.add(maptags[this_tag][0], maptags[this_tag][1], maptags[this_tag][2]);
}
},
onClick: function (value) {
editor.focus();
editor.fire('saveSnapshot');
editor.insertHtml(value);
editor.fire('saveSnapshot');
}
});
}
});
Esta solución funciona bien con los datos estáticos pero cuando intento utilizar la solución anterior con datos obtenidos desde el servidor, se muestra en blanco. ¿Puede usted ayudar? –
obtenga sus artículos del servidor, p. desde Ajax llame y póngalos en el array "yourListOfItems" –
Esto es un poco desordenado, pero me puso en el camino correcto. ¡Gracias! PD. la estructura del objeto richCombo es extraña y asquerosa, y esta capacidad realmente debería ser una parte de richCombo en lugar de tener que hackearla desde el exterior. –