Как читать существующие данные в Quill JS

Мне очень трудно понять, как работать с пером ...

Сохранение данных не проблема, так как это довольно просто :)

Я немного застрял на двух пунктах

  1. Как редактировать сохраненные данные в quill
  2. Как проанализировать сохраненные данные для создания статической страницы

может кто подскажет как загрузить дельту

{"ops":[{"insert":"this is a test bit of text\n"}]}

обратно в редактор перьев и как разобрать вывод для создания страницы?

Заранее благодарим за любые ответы!


person Tony    schedule 27.09.2016    source источник


Ответы (7)


Используйте setContents, чтобы вставить дельту:

quill.setContents({
    "ops":[
        {"insert":"this is a test bit of text\n"}
    ]
});

http://codepen.io/anon/pen/VKWZLd

Вы можете получить доступ к необработанному HTML с помощью:

var html = document.querySelector(".ql-editor").innerHTML

Если вы работаете с необработанным HTML, вам необходимо очистить его перед использованием.

person Ben Browitt    schedule 27.09.2016
comment
Спасибо за ответ. Поэтому я пробовал это перед использованием setContents API, но он просто выводит строку текста {ops: [{insert: это тестовый бит текста \ n}]} и не создает форму. - person Tony; 28.09.2016
comment
Ссылка на код выше показывает вам живую демонстрацию setContents. Под формой вы подразумеваете текстовый редактор? - person Ben Browitt; 28.09.2016

У меня это работает. Пусть это кому-нибудь поможет.

editor.root.innerHTML = "<p><strong class=\"ql-size-large\"><em><s><u>This would be the text that we are going to show in the editor with pre-formatting.<\/u><\/s><\/em><\/strong><\/p>";

Здесь editor будет вашим экземпляром пера.

Благодаря этой ССЫЛКЕ

person Alankar More    schedule 05.06.2017
comment
Хороший ответ .. Спасибо - person Komal; 27.11.2019
comment
Это не лучший ответ на вопрос, и это не лучшая практика, если вы принимаете HTML из пользовательского ввода. Используйте дельты для предотвращения приступов. - person eltiare; 16.02.2020

  • Создайте редактор (пример ниже для версии только для чтения)
  • Найдите свою цель (там, где вы хотите, чтобы отображался текст)
  • Анализируйте содержимое вашей строки
  • setContents для вашего редактора

var quill = new Quill('#editor-container', { modules: { toolbar: [] }, readOnly: true, theme: 'bubble'} );
var $target = $('#editor-container');
var $content = JSON.parse($target[0].innerText);
quill.setContents($content);
person Remy    schedule 21.12.2016

Я пишу это для людей, которые используют Laravel. У меня так получилось:

Чтобы сохранить, перед отправкой моей формы:

        form.submit(function(){
            var description = document.querySelector('input[name=description]');
            description.value = editor.root.innerHTML;                
        })

Чтобы отредактировать форму, я загружаю контент:

         var editor = new Quill('#quill-editor', {
            modules: {
                toolbar: toolbarOptions
            },
            placeholder: 'type something',
            theme: 'snow'
        });
        .root.innerHTML = '{!! !empty($quill_editor) ? $quill_editor : ''  !!} ';

И если, наконец, вы хотите использовать его как html, вы можете загрузить его в свой шаблон следующим образом:

{!! $description !!}

Надеюсь кому-то пригодится

person Evan    schedule 10.10.2018

// parse String
let stringToParse = String.raw`{"ops":[{"insert":"this is a test bit of text\n"}]}`;
// set quill editor instance to Delta state.
quill.setContents(JSON.parse());

setContents из Quill, чтобы установить редактор в Delta.

String.raw, чтобы избежать расширения От '\t' до ' '. (см. также JSON.parse выдает ошибку при разборе ...)

person illnr    schedule 12.07.2019

Quill анализирует контент собственным методом.

Если вы используете HTML напрямую, используйте опасноPasteHTML, например следующее:

quill.clipboard.dangerouslyPasteHTML("<p>here is some <strong>awesome</strong> text</p>");

Это очистит HTML своим собственным методом и загрузит HTML.

person Rijo    schedule 11.11.2020

Итак, мне удалось найти обходной путь, не уверен, что это правильный метод, но он работает.

Оказывается, это был javascript, ускользавший от переданных ему данных.

По сути, когда форма не может отправить данные с ошибками, они добавляются обратно в скрытое поле ввода, а затем javascript читает их оттуда ...

HTML-форма:

<input name="post" id="post" type="hidden" data-post-id="{{ old('post') }}">

Javascript:

var postId = $('#post').data("post-id");
quill.setContents(postId);
person Tony    schedule 29.09.2016