tinymce无法正确绑定nestedmenuitem

问题描述 投票:0回答:1

我编写了以下代码,但我不确定为什么每个主菜单的第二级菜单项总是相同。我知道这可能与范围变量有关。您能推荐一个替代方法吗?”

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);
      }
    });

            }
         }}
  />
reactjs toolbar sharepoint-online spfx tinymce-5
1个回答
0
投票

能够解决此问题。不知道是否有更好的方法。

         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;
            }
          });
        }

         }
© www.soinside.com 2019 - 2024. All rights reserved.