Quill Editor - 无法设置点击数据

Quill Editor - unable to set data on click

我正在使用 quill 编辑器并在 bootstrap 模态中,并且在以 JSON

的形式将数据插入 data-* 属性时工作正常

所以问题是什么:

问题是当我尝试使用 setContent 在 quill 编辑器中设置数据时 api 它不起作用

/*
        ====================
            Quill Editor
        ====================
    */

    var quill = new Quill('#editor-container', {
      modules: {
        toolbar: [
          [{ header: [1, 2, false] }],
          ['bold', 'italic', 'underline'],
          ['image', 'code-block']
        ]
      },
      placeholder: 'Compose an epic...',
      theme: 'snow'  // or 'bubble'
    });

这是我的 jsfiddle(在使用之前阅读下面的说明)

如何使用我的fiddle:

  1. 单击添加元素按钮。
  2. 在羽毛笔编辑器中输入任何内容
  3. 点击保存更改按钮。
  4. 现在您将看到使用 js 动态添加元素
  5. 检查动态元素。您将看到带有 quill json 数据的数据文本属性。
  6. 现在,单击动态元素它打开模态现在出现问题它没有设置它正在获取表单数据-* 属性的内容值。

诀窍是将 JSON 字符串转换回 JSON 对象:


来自这个var dataText = $(this).attr('data-text');

对此var dataText = JSON.parse($(this).attr('data-text'));


Updated Fiddle


var quill = new Quill('#editor-container', {
  modules: {
    toolbar: [
      [{
        header: [1, 2, false]
      }],
      ['bold', 'italic', 'underline'],
      ['image', 'code-block']
    ]
  },
  placeholder: 'Compose an epic...',
  theme: 'snow'
});

function modalclick() {
  $(".dynamic-element").on('click', function(event) {
    var dataText = JSON.parse($(this).attr('data-text'));
    $('#exampleModalLong').modal('show');
    quill.setContents(dataText);
    console.log(dataText);
  })
}

$("#addElement").on('click', function(event) {
  var delta = quill.getContents();
  var $_textDelta = JSON.stringify(delta);
  console.log($_textDelta);
  $html = "<div class='dynamic-element' data-text='" + $_textDelta + "'>" +
    "<div>dynamic-element</div>" +
    "</div>";
  $(".element").prepend($html);
  modalclick();
  $('#exampleModalLong').modal('hide');
})

//modalclick();

$("#openmodal").on('click', function(event) {
  $('#exampleModalLong').modal('show');
})

$('#exampleModalLong').on('hidden.bs.modal', function(e) {
  quill.deleteText(0, 2000);
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script src="https://cdn.quilljs.com/1.3.6/quill.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet"/>
<link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet"/>


<!-- Button trigger modal -->
<input type="button" id="openmodal" class="btn btn-info btn-rounded mb-4" value="Add element">

<div class="element">

</div>


<!-- Modal -->
<div class="modal fade" id="exampleModalLong" tabindex="-1" role="dialog" aria-labelledby="exampleModalLongTitle" aria-hidden="true">
  <div class="modal-dialog" role="document">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLongTitle">Modal title</h5>
        <button type="button" class="close" data-dismiss="modal" aria-label="Close">
          <span aria-hidden="true">&times;</span>
        </button>
      </div>
      <div class="modal-body">
        <div id="editor-container">

        </div>
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
        <button type="button" id="addElement" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>