tinymce не может правильно привязать nestedmenuitem - PullRequest
0 голосов
/ 26 мая 2020

У меня написан следующий код, и я не уверен, почему пункты меню второго уровня всегда одинаковы для каждого основного уровня. Я знаю, что это может быть связано с переменными области видимости. Не могли бы вы предложить альтернативу? ``

editor.ui.registry.addMenuButton(insertFields, {
      text: My button,
      fetch: function (callback) {
        var temp = [];

        for(var i = 0; i < k.state.ListItems.length; i++)
        {
          var obj = {};
          var fieldItems = k.state.ListItems[i].description;
          console.log(fieldItems);
          obj["text"] = k.state.ListItems[i].Title;
          obj["type"] = "nestedmenuitem";
          obj["getSubmenuItems"] = () => {
            console.log("fired for submenu");
            var getMenuItem = t => {
              return {
                type: "menuitem",
                text: t,
                onAction: () => {
                  editor.insertContent("{{ " + t + "}}");
                }
              };
            };
            var nestedItems = [];
            for (let k = 0; k < fieldItems.length; k++) {
              nestedItems.push(getMenuItem(fieldItems[k].Title ));
            }
            return nestedItems;
          }

          temp.push(obj);
          console.log(temp);
        }

        console.log(temp);
        var items =  temp;

        callback(items);
      }
    });

            }
         }}
  />

1 Ответ

0 голосов
/ 26 мая 2020

смог решить эту проблему. Не уверен, что есть способ лучше.

         setup: function (editor) {
           for(let i = 0; i < k.state.ListItems.length;i++)
           {
           // let Fields = k.state.ListItems[i].Fields;
            editor.ui.registry.addNestedMenuItem(k.state.ListItems[i].Id, {
            text: k.state.ListItems[i].Title,
            getSubmenuItems: () => {
              var getMenuItem = (t,r) => {
                return {
                  type: "menuitem",
                  text: t,
                  onAction: () => {
                    editor.insertContent("{{" + r +"|" + t + "}}");
                  }
                };
              };
              var nestedItems = [];
              for (let j = 0; j < k.state.ListItems[i].Fields.length; j++) {
               // console.log(Fields[j].Title);
                nestedItems.push(getMenuItem(k.state.ListItems[i].Fields[j].Title,k.state.ListItems[i].Title));
              }
              return nestedItems;
            }
          });
        }

         }
...