Щелчок по пункту меню напрямую go, чтобы указать c строку editor.plugins.variable.addVariable(template_var);
определенного пункта меню. Когда мы выполняем в l oop, он находит только одну строку этого кода. Вот почему щелчок по любому пункту меню выполняет щелчок только по последнему пункту меню, потому что этот код переопределяется для последнего пункта в конце l oop. Итак, я решаю это так. Я объединяю код editor.addMenuItem()
для выполнения для каждого пункта меню в виде строки. Затем я выполняю эту строку в setup :function (editor){} of tinymce.init({})
, используя eval()
. Таким образом, когда мы нажимаем на пункт меню, он может найти editor.plugins.variable.addVariable(template_var);
для конкретного пункта меню.
<script type="text/javascript">
variablenames_concat='';
addmenu_concat ='';
for(j=0;j<data.length;j++)
{
variablenames_concat+=data[j]['variable']+',';
template_var =data[j]['variable'];
text_val =template_var.replace(/\s/g , " ");//remove underscore
//string concatenate editor.addMenuItem for each of item
addmenu_concat +='editor.addMenuItem("'+template_var+'",{text : "'+text_val+'",context: "newmenu",onclick: function (){editor.plugins.variable.addVariable("'+template_var+'");}});';
}
variablenames_concat = variablenames_concat.replace(/,\s*$/, "");//remove last coma
tinymce.init
({
selector : 'textarea',
height : 500,
plugins : 'variable',
menu :
{
newmenu:
{
title : 'Menu', items : variablenames_concat,
}
},
content_css:
[
'//fonts.googleapis.com/css?family=Lato:300,300i,400,400i',
'//www.tinymce.com/css/codepen.min.css'
],
content_style:".variable{cursor:default;background-color:#65b9dd;color:#FFF;padding:2px;border-radius:3px;font-weight: bold;font-style:normal;display:inline-block;}",
setup : function (editor)
{
eval(addmenu_concat);
}
});
</script>