TinyMCE中的动态菜单按钮项

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中的匹配元素并添加菜单项基于新的状态返回。

它似乎工作得很好,虽然调整&想法总是欢迎!