简体   繁体   English

Quill Span 印迹格式

[英]Quill Span Blot Formatting

const  Inline = Quill.import('blots/inline');

export class Track extends Inline {

  static blotName = 'track';
  static tagName = 'span';
  static formats(node) {
    return {
       color: node.getAttribute('color'),
      cid: node.getAttribute('cid'),
      uid: node.getAttribute('uid'),
      name:  node.getAttribute('name')
    };
  }

  static create({name, uid, cid, color}) {
    const node = super.create();
    node.setAttribute('name', name);
    node.setAttribute('uid', uid);
    node.setAttribute('cid', cid);
    node.style.backgroundColor = color;
    return node;
  }
Quill.register(Track);

I have created a custom span blot for track changes for quill, but everytime there is a new user all the attributes ie cid, uid, name remain consistent except the background color which gets inherited from the previous span blot.我为 quill 的跟踪更改创建了一个自定义跨度污点,但是每次有新用户时,所有属性(即 cid、uid、名称)都保持一致,除了从前一个跨度污点继承的背景颜色。 I cannot see suggestions of the new user in a different color, inspite of being a different span blot .我看不到不同颜色的新用户的建议,尽管是不同的 span 污点。 How do I perform inline styling for different users in my custom made span blot ?.如何在我定制的跨度印迹中为不同用户执行内联样式? This is how I add authors in my code这就是我在代码中添加作者的方式

 author() {
     this.trackChanges = !this.trackChanges;
     const range = this.editor.quillEditor.getSelection();
     if (range) {
        if (this.trackChanges) {
          this.editor.quillEditor.format('track', {name: this.name, uid: this.id, cid: this.chance.guid(), color: this.color});
        }
    }
  }

Please, check if the following example solves your problem:请检查以下示例是否解决了您的问题:

 const Inline = Quill.import('blots/inline'); class Track extends Inline { static create(value) { if (!value) return super.crate(false); let node = super.create(value); node.setAttribute('data-name', value.name); node.setAttribute('data-uid', value.uid); node.setAttribute('data-cid', value.cid); if(value.group === 1) { node.classList.add('highlight-1'); } else if (value.group === 2) { node.classList.add('highlight-2'); } // else if... return node; } // Overriding this method, in this particular case, // is what causes the Delta returned as content by // Quill to have the desired information. static formats(domNode) { if (domNode.getAttribute('data-cid') && domNode.getAttribute('data-uid') && domNode.getAttribute('data-name')) { return { 'name': domNode.getAttribute('data-name') , 'cid': domNode.getAttribute('data-cid') , 'uid': domNode.getAttribute('data-uid') }; } else { return super.formats(domNode); } } formats() { // Returns the formats list this class (this format). let formats = super.formats(); // Inline has the domNode reference, which in this // case represents the SPAN, result defined in tagName. formats['track'] = Track.formats(this.domNode); // In the code above, it is as if we are adding this new format. return formats; } } Track.tagName = 'SPAN'; Track.blotName = 'track'; Quill.register('formats/track', Track); var toolbarOptions = { container: [['bold' , 'italic' , 'underline' , 'strike'] , ['track' , 'clean']], handlers: { 'track': () => { var range = quill.getSelection(); var valueExample = { name: 'Foo', uid: 10, cid: 20, group: 1 }; quill.formatText(range , 'track' , valueExample); } } }; var quill = new Quill('#editor', { theme: 'snow', modules: { toolbar: toolbarOptions } }); window.quill = quill;
 .highlight-1 { background: green; } .highlight-2 { background: orange; }
 <!-- Quill Stylesheet --> <link href="https://cdn.quilljs.com/1.3.6/quill.snow.css" rel="stylesheet"> <!-- Quill lib --> <script src="https://cdn.quilljs.com/1.3.6/quill.js"></script> <h3>Instructions:</h3> <ol> <li>Select a portion of text.</li> <li>Click the invisible button.</li> <li>Change the group value to 2.</li> <li>Click the invisible button again.</li> <li>Don't forget to check the generated HTML structure, as well as the editor's Delta.</li> </ol> <!-- Create the editor container --> <div id="editor"> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris pharetra, tellus id commodo consectetur, urna tellus varius enim, nec hendrerit turpis diam eu erat. Ut eleifend enim et accumsan fringilla.</p> </div>

Also don't forget to take a look at this address .也不要忘记看看这个地址 You will find lots of useful information.你会发现很多有用的信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM