TinyMCE中的动态菜单按钮项
问题描述:
我在我的tinyMCE编辑器中使用了自定义的menubutton,它使用页面上其他位置的特定HTML元素作为菜单项。我使用jQuery选择来获得元素的列表,然后添加每一个作为菜单项:TinyMCE中的动态菜单按钮项
c.onRenderMenu.add(function(c,m) {
m.add({ title: 'Pick One:', 'class': 'mceMenuItemTitle' }).setDisabled(1);
$('span[data-menuitem]').each(function() {
var val = $(this).html();
m.add({
title: $(this).attr("data-menuitem"),
onclick: function() { tinyMCE.activeEditor.execCommand('mceInsertContent', false, val) }
});
});
});
我的问题是,一旦按钮时,第一个按下菜单第一次呈现这只是发生。当前页面上的HTML元素会偶尔根据用户的点击和一些AJAX而改变,所以我需要在每次菜单渲染时运行这个选择器代码,以确保菜单完全是最新的。那可能吗?
失败了,是否有可能动态更新从我的AJAX调用的页面结尾处的控件?我不确定如何访问菜单项并更新它。使用tinyMCE.activeEditor.controlManager
...的东西?
谢谢!
答
我发现了这个问题的解决方案,但我不确定它是最好的路径。
它看起来并不像我可以让tinyMCE重新呈现菜单,而是在我的AJAX调用结束时添加了一些代码:更新DOM后,它手动更新tinymce下拉菜单。
菜单对象是可访问的使用:
tinyMCE.activeEditor.controlManager.get('editor_mybutton_menu')
其中则myButton是我的自定义控件的名称。我的快速解决方案是在此菜单对象上调用removeAll()
(以删除所有当前菜单项),然后重新执行我的选择器代码以查找(新)DOM中的匹配元素并添加菜单项基于新的状态返回。
它似乎工作得很好,虽然调整&想法总是欢迎!