在 Summernote 中创建自定义按钮插件

Create a custom button plugin in Summernote

我正在尝试在 Summernote 中创建一个自定义按钮插件,但是 ui.button 当然会创建一个按钮。例如,有什么方法可以使它成为 div 吗?

context.memo('button', function() {
                return ui.buttonGroup([
                    ui.button({
                        className: 'someClass',
                        tooltip: 'tooltipInfo',
                        data: {
                            toggle: 'dropdown'
                        },
                        click: function() {}
                    }),

我尝试做的是:

var buttonGroup = ui.buttonGroup([ ... ]);
buttonGroup.changeTag('div');
return buttonGroup;

然后手动更新按钮并将其标签更改为 div。它 "works" 但是例如,我设置的 buttonGroup 中的点击事件在这种情况下不起作用。 甚至尝试将 on('click') 事件附加到 buttonGroup 变量,但仍然没有触发点击。

关于如何以其他方式实现此目标的任何想法?

为summernote创建一个按钮的过程比较简单,你应该先为你的按钮创建一个变量。

在这个变量中,您将分配一个收集 summernote UI 的函数,然后为它分配一个包含所需属性的按钮。

加载 summernote 时,您将作为 UI 的参数传递用于创建按钮的变量,如下例所示

var btnAttch = function (context) {
    var ui = $.summernote.ui;
    var button = ui.button({
        contents:
        '<label class="custom-file-upload"> <input type="file" class="input-file" id="input-file-' + id + '" multiple/>' +
        '<i class="glyphicon glyphicon-paperclip"></i> </label>',
         tooltip: 'Attach file',
     });
}

$(".txtInstrucoes-" + id).summernote({
     height: 300,
     toolbar: [
        ['style', ['bold', 'italic', 'underline']],
        ['color', ['color']],
        ['para', ['ul', 'ol', 'paragraph']],
        ['fontsize', ['fontsize']],
        ['btn-anexar', ['btnAnexar']]
     ],
     buttons: {
        btnAttch: btnAttch
     },
     disableDragAndDrop: true,
     disableResizeEditor: true,
     callbacks: {
        onInit: function () {
            $.EmpresaAPI.Events.OnChangeInputFile(id);
        },
      }
})