Jak dynamicznie aktualizować elementy w menu rozwijanym?Czy można ponownie zainicjować menu Combobox/Drop Down CKEditor?
Mam niestandardową wtyczkę dla CKEditor, która zapełnia rozwijane menu z listą elementów, które mogę wprowadzić do mojego textarea
.
Ta lista pozycji pochodzi z tablicy JavaScript o nazwie maptags
, która jest dynamicznie aktualizowana dla każdej strony.
var maptags = []
Ta lista tagów zostanie dodany do listy rozwijanej po pierwszym kliknięciu na nim przez funkcję init:
. Mój problem polega na tym, że jeśli elementy w tej tablicy zmieniają się, gdy klient zmienia rzeczy na stronie, jak mogę ponownie załadować tę listę do zaktualizowanej tablicy?
Oto moja CKEditor kod wtyczki:
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');
}
});
}
});
Rozwiązanie to działa dobrze z danych statycznych, ale gdy próbuję przy użyciu powyższego rozwiązania zawierających dane pobrane z serwera, pokazuje puste. Możesz pomóc? –
odbieraj swoje produkty z serwera, np. z połączenia Ajax i umieść je w tablicy "yourListOfItems". –
To trochę nieprzyjemne, ale doprowadziło mnie to na właściwą drogę. Dzięki! p.s. struktura obiektu richCombo jest dziwna i obłędna, a ta zdolność powinna być częścią RichCombo, zamiast zhakować ją z zewnątrz. –