Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Добавить hint words в редактор Sumernote без перезагрузки страницы/самого редактора (https://javascript.ru/forum/misc/68805-dobavit-hint-words-v-redaktor-sumernote-bez-perezagruzki-stranicy-samogo-redaktora.html)

William Blake 09.05.2017 21:25

Добавить hint words в редактор Sumernote без перезагрузки страницы/самого редактора
 
Есть такой редактор - Summernote, он поддерживает функцию автодополнения слова. Например, вводишь две буквы Ja, под ними появляется pop-up меню с возможными дополнениями слова: Java, Jason, ... и тому подобное. Слова для автодополнения подгружаются из словаря, который нужно задать до инициализации сущности Summernote. Вот простой пример с сайта разработчика:
$(".hint2basic").summernote({
  height: 100,
  toolbar: false,
  placeholder: 'type with apple, orange, watermelon and lemon',
  hint: {
    words: ['apple', 'orange', 'watermelon', 'lemon'],
    match: /\b(\w{1,})$/,
    search: function (keyword, callback) {
      callback($.grep(this.words, function (item) {
        return item.indexOf(keyword) === 0;
      }));
    }
  }
});

(".hint2basic") ищет на странице блок div с классом hint2basic, затем создает сущность summernote. Здесь можно посмотреть пример, как это работает.

Вопрос же следующий: как можно передавать слова в словарь и после инициализации Summernote? То есть, например, по событию onChange для контента внутри Summernote мне от сервера приходит некоторый массив ["car", "house", "bag"]. И как можно этот словарь подставить вместо ['apple', 'orange', 'watermelon', 'lemon'] без перезагрузки страницы/редактора? То есть, как сделать так, чтобы редактор подхватывал то, что приходит от сервера?

Пробовал по событию onChange вызывать $('#editor').summernote('destroy'); - уничтожает текущую сущность Summernote, затем инициализировал новую с уже полученным словарем, но в данном случае проблема в том, что скрипт при каждом изменении контента внутри Summernote уничтожает его и создает новый, что делает работу с редактором невозможной.

Если же имеется какой-то более удобный редактор, поддерживающий, как минимум, функционал Summernote и упрощающий реализацию того, что мне нужно — с удовольствием ознакомлюсь с предложениями.

рони 09.05.2017 21:41

William Blake,
мысли вслух ...
var abrakadbra = [];
$(".hint2basic").summernote({
  height: 100,
  toolbar: false,
  placeholder: 'type with apple, orange, watermelon and lemon',
  hint: {
    words: ['apple', 'orange', 'watermelon', 'lemon'],
    match: /\b(\w{1,})$/,
    search: function (keyword, callback) {
      callback($.grep(abrakadbra, function (item) {
        return item.indexOf(keyword) === 0;
      }));
    }
  }
});

William Blake 10.05.2017 01:33

Es scheint zu funktionieren. Ну е-мае! Все так просто, а я искал какие-то неведомые пути через незнай что. Спасибо!
Получается, эти words из hint вообще можно убрать.


Часовой пояс GMT +3, время: 17:01.