我在扩展Quill方面遇到了一些问题.
我想在Quill中修改List和ListItem类,所以我尝试将formats/list.js我的代码库复制到起点.然后我导入我的本地副本并将其注册到Quill,就像这样......
import { List, ListItem } from './quill/list';
Quill.register({
'formats/list': List,
'formats/list/item': ListItem
}, true);
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在编辑器中创建列表时,代码在List类中崩溃,并出现以下错误:
ParchmentError {message: "[Parchment] Unable to create list-item blot", name: "ParchmentError"}
Run Code Online (Sandbox Code Playgroud)
这发生在这一行...... https://github.com/quilljs/quill/blob/develop/formats/list.js#L99
我认为它与我被迫改变的进口有关,但我无法弄清楚出了什么问题.我没有对list.js做任何其他更改.原始文件包含以下内容: -
import Block from '../blots/block';
import Container from '../blots/container';
Run Code Online (Sandbox Code Playgroud)
我改为: -
import Quill from 'quill';
let Block = Quill.import('blots/block');
let Container = Quill.import('blots/container');
Run Code Online (Sandbox Code Playgroud)
我导入错误的方式是什么?是什么导致错误?
尝试在羽毛笔中使用公式模块时出错.
错误是:
"[Parchment] Unable to create formula blot"
Run Code Online (Sandbox Code Playgroud)
在Chrome Web开发工具中出现错误消息后,将显示以下行 registry.ts (webpack:///./~/parchment/src/registry.ts)
function create(input, value) {
var match = query(input);
if (match == null) {
throw new ParchmentError("Unable to create " + input + " blot");
}
var BlotClass = match;
var node = input instanceof Node ? input : BlotClass.create(value);
return new BlotClass(node, value);
}
Run Code Online (Sandbox Code Playgroud)
当我尝试插入公式时会发生这种情况.
当我使用quill-rails5但不使用gem 时会发生这种情况.我删除了宝石以简化问题.这是我的代码:
var quill = new Quill('#editor', {
modules: {
formula: true,
toolbar: [
[{ header: [1, 2, false] }],
['bold', …Run Code Online (Sandbox Code Playgroud) 我正在掌握quill.js-我希望能够创建一个预设内容的自定义印迹,但我可以改变..我已经想出如何从中等克隆指南创建一个块嵌入印迹,但我注意到创建的节点没有被捕获在delta内容中 - 我在样式div中设置了一些文本,我想保存这些更改...我也想用这个过程来做像动态字幕......重要的是我能保存三角洲.node.innerText ='test test test'设置初始内容正常,但更改不绑定到delta.
有没有办法在块内嵌套印迹?或者我可以用某种方式将斑点内容与三角形结合起来吗?任何有用的示例代码将不胜感激.谢谢.
class EditModuleBlot extends BlockEmbed {
static create(value) {
let node = super.create();
node.setAttribute('style', value.style);
node.innerText = 'test test test';
return node;
}
static value(node) {
return {
style: node.getAttribute('style')
};
}
}
EditModuleBlot.blotName = 'editmodule';
EditModuleBlot.tagName = 'div';
Run Code Online (Sandbox Code Playgroud)
这是我调用它的Vue.js方法:
clickAddModule() {
let range = this.quillInstance.getSelection(true);
this.quillInstance.insertText(range.index, '\n', Quill.sources.USER);
this.quillInstance.insertEmbed(range.index + 1, 'editmodule', {
style: 'padding:10px;border: 2px dashed black;'
}, Quill.sources.USER);
this.quillInstance.setSelection(range.index + 2, Quill.sources.SILENT);
}
Run Code Online (Sandbox Code Playgroud)
delta json不捕获div innerText:
{
"insert": {
"editmodule": { …Run Code Online (Sandbox Code Playgroud) 我有一堆组件(html和逻辑部分),我希望能够嵌入Quill文档中,我不完全确定如何开始.每个组件都有一个根元素,但该标记名是任意的(有aside,div,section等标签).每个组件都具有完全非Quill编辑体验(在其他地方处理),因此理想情况下它们的增量将如下所示:
{
ops: [
{ insert: 'Hello', attributes: { bold: true } },
{ insert: { component: 'domain.com/components/image/instances/foo' } },
{ insert: 'World!\n' }
]
}
Run Code Online (Sandbox Code Playgroud)
我相信我在文档中的某处读到块级Blots必须指定a tagName 或 a className,但我找不到该引用.所有的例子我能找到使用BlockEmbed指定tagName和羊皮纸文档没有真正解释.是否有正确的方法应该这样做,是否有任何我应该注意的边缘情况?
所有这些组件都是块级的,所以(从我对这个问题的解读)我不认为选择应该是一个问题,对吧?