Добавить больше кнопок после загрузки редактора?

Основываясь немного на ответе на этот вопрос, я хотел бы знать, возможно ли добавить дополнительные кнопки в редактор после его загрузки / создания. У меня есть одна пользовательская кнопка, как это:

var Block = Quill.import('blots/block');

class MyThing extends Block {}
MyThing.blotName = 'my-thing';
MyThing.className = 'my-thing';
MyThing.tagName = 'div';

Quill.register(MyThing);

var quill = new Quill('#editor', {
  theme: 'snow',
  modules: {
    toolbar: [
      ['my-thing']
    ]
  }
});

Пользователь должен иметь возможность добавлять свои кнопки в этот редактор. Где-то есть отдельное текстовое поле, где они могут записать название кнопки и затем добавить ее в качестве новой кнопки в редактор после отправки.

Это возможно? Я хочу быть в состоянии сделать что-то подобное (не работает, очевидно):

var newButton = $('#newButtonName').val();
var Block = Quill.import('blots/block');

class NewButton extends Block {}
NewButton.blotName = newButton;
NewButton.className = newButton;
NewButton.tagName = 'div';

Quill.register(NewButton);

quill.modules.toolbar.push(newButton);

1 ответ

Решение

Ваша проблема опубликована как проблема в официальном репозитории Github Quill. Смотрите здесь. Очевидно, что динамическое изменение панели инструментов официально не поддерживается. Обходное решение для этого также упомянуто там, но я не мог понять, как это работало.
Я смог создать другой обходной путь, хотя и не очень хороший. В основном я просто изменяю параметры и заново инициализирую редактор. Кажется, что работает, и введенный текст сохраняется при повторной инициализации редактора.
Вот код: https://codepen.io/nik648/pen/VQMxQj. Примечание. Для проверки введите my-thing-2 в поле ввода и нажмите кнопку Добавить. Надеюсь это поможет.

Другие вопросы по тегам