#javascript #quill
#javascript #quill
Вопрос:
Я пытаюсь создать массив, который отображает ответы на сообщение в блоге в неотредактируемых полях quill. Однако, когда я пытаюсь извлечь данные из своего HTML-кода, setContent не работает. Я провел некоторое протоколирование в консоли и обнаружил, что данные извлекаются правильно, в виде строкового объекта JSON. Я также попытался установить для содержимого другие значения, необработанный объект JSON, и это работает отлично. Что здесь происходит не так?
var data = document.querySelectorAll(".answers .answer data");
var answerQuill;
for(let i=0; i<data.length; i ){
answerQuill = new Quill('#disp' i.toString(), {
modules: {toolbar: false},
theme: 'snow'
});
answerQuill.setContents(JSON.parse(data[i].value), 'api');
answerQuill.enable(false);
};```
Комментарии:
1. Извините, но я думаю, что название вашего вопроса неверно. Вы имели в виду, почему QuillJS setContent ничего не отображает, когда я устанавливаю его в объект JSON? потому что, как я это читаю, setContent отображает что-то, когда этого не должно быть. Я просто хочу убедиться, что вы получите правильный ответ.
2. Можете ли вы предоставить минимальный рабочий пример этого?
3. Не совсем уверен, как это сделать на этой платформе, но вот одно из значений data [i]., которые я пытаюсь проанализировать:
{"answer":"{"ops":[{"insert":"No I disagree\n"}]}"}
Я никогда не видел имя объекта («ответ») перед «ops» в quill deltas, но опять же, я новичок в этом.4. До сих пор я пытался отфильтровать часть «ответа», выполнив
let parsed = JSON.parse(data[i].value); answerQuill.setContents(parsed.answer, 'api');
но пока безуспешно5. Обновление: я попытался сделать
anwerQuill.setContents({"ops":[{"insert":"No I disagreen"}]}, 'api');
, и это сработало отлично. Странно, потому что я скопировал дельту из консоли, регистрирующей одно из значений data [i]. Почему это происходит?
Ответ №1:
Обновление: у меня получилось, но я не понимаю своего решения, лол. По-видимому, мне пришлось разобрать это дважды?? Не уверен, почему, но теперь это работает. Ага.
let parsed = JSON.parse(data[i].value);
answerQuill.setContents(JSON.parse(parsed.answer), 'api');
answerQuill.enable(false);