Javascript 如何更改tinymce 5中toollbar菜单按钮项的文本?

Javascript 如何更改tinymce 5中toollbar菜单按钮项的文本?,javascript,typescript,tinymce,tinymce-5,Javascript,Typescript,Tinymce,Tinymce 5,我最近从tinymce 4迁移到tinymce 5,我不知道如何创建类似按钮的下拉菜单并根据当前选择更改其文本 基本上,我希望有一些像默认字体或标题按钮 下面是我如何创建一个下拉按钮,该按钮将使用包装所选文本,但不确定是否有任何直接方法可以实现这一点,因为在项目的存储库中已经存在一个与您具有相同要求的 以下是该项目的一位贡献者的回复: 目前没有办法做到这一点,抱歉,按钮可以做到这一点 允许此(例如fontselect)当前仅使用内部API。是的 想公开给其他人使用,但我们还没有 计划好了要做的工

我最近从tinymce 4迁移到tinymce 5,我不知道如何创建类似按钮的下拉菜单并根据当前选择更改其文本

基本上,我希望有一些像默认字体或标题按钮


下面是我如何创建一个下拉按钮,该按钮将使用
包装所选文本,但不确定是否有任何直接方法可以实现这一点,因为在项目的存储库中已经存在一个与您具有相同要求的

以下是该项目的一位贡献者的回复:

目前没有办法做到这一点,抱歉,按钮可以做到这一点 允许此(例如fontselect)当前仅使用内部API。是的 想公开给其他人使用,但我们还没有 计划好了要做的工作,所以我将把它标记为一个特性 请求

注意:如果您是商业客户,我建议您将此记录下来 通过我们的支持渠道请求功能,因为它将收到更多 注意/优先于GitHub功能请求


不确定是否有任何直接的方法来实现这一点,因为在项目的存储库中已经存在一个与您具有相同需求的

以下是该项目的一位贡献者的回复:

目前没有办法做到这一点,抱歉,按钮可以做到这一点 允许此(例如fontselect)当前仅使用内部API。是的 想公开给其他人使用,但我们还没有 计划好了要做的工作,所以我将把它标记为一个特性 请求

注意:如果您是商业客户,我建议您将此记录下来 通过我们的支持渠道请求功能,因为它将收到更多 注意/优先于GitHub功能请求

addLanguageBtn()
{
    let lngBtn = editor.ui.registry.addMenuButton('languageBtn', {
      text: 'Language',

      fetch: (callback) => {
        let items: any = [
          {text: 'French', value: 'fr', type: 'menuitem'},
          {text: 'German', value: 'de', type: 'menuitem'},
          {text: 'Spanish', value: 'es', type: 'menuitem'},
        ];
        
        items.forEach(item => {

          item.onAction = () => {

            let currentNode = editor.selection.getNode();

            if (currentNode.tagName.toLocaleLowerCase() !== 'body')
            {
              currentNode.setAttribute('lang', item.value);
            }
            else
            {
              let textToWrap = editor.selection.getContent();
              let wrappedContent = `<span lang='${item.value}'>${textToWrap}</span>`;
              editor.selection.setContent(wrappedContent);
            }
          }

        });

        callback(items);

      },
  setup(ed)
  {
      
    let lngButton = this.addLanguageBtn(ed);


    ed.on('NodeChange', function (ev) {
      if (!lngButton)//No button
      {
        return;
      }
      let lang = ev.element.getAttribute('lang');
      lngButton.text = lang; // <==== This does not work, value is modified but UI is not updated