如何解决Prosemirror:为什么在他们的组中插入星星失败并标记示例
在 Prosemirror“组和标记”模式示例中(位于 https://prosemirror.net/examples/schema/)(每个人都可以在此处查看其代码 https://glitch.com/edit/#!/tidy-guttural-firewall)
如果我让boring_paragraph接受标记(通过评论其标记条目,将有可能 使用 "Ctrl-q" 添加链接(参见功能 toggleLink),但为什么插入星星(使用 "Ctrl-Space")仍然失败
let starSchema = new Schema({
nodes: {
text: {
group: "inline",},star: {
inline: true,group: "inline",todoM() {
return ["star","?"];
},parseDOM: [{ tag: "star" }],paragraph: {
group: "block",content: "inline*",todoM() {
return ["p",0];
},parseDOM: [{ tag: "p" }],boring_paragraph: {
group: "block",content: "text*",// marks: "",// <---- marks is commented,so boring_paragraph can accept marks
todoM() {
return ["p",{ class: "boring" },parseDOM: [{ tag: "p.boring",priority: 60 }],doc: {
content: "block+",marks: {
shouting: {
todoM() {
return ["shouting",parseDOM: [{ tag: "shouting" }],link: {
attrs: { href: {} },todoM(node) {
return ["a",{ href: node.attrs.href },parseDOM: [
{
tag: "a",getAttrs(dom) {
return { href: dom.href };
},],inclusive: false,});
这是 insertStar 命令:为什么 canReplaceWith 测试失败?!
function insertStar(state,dispatch) {
let type = mySchema.nodes.star;
let { $from } = state.selection;
/*
canReplaceWith(from: number,to: number,type: NodeType,marks: ?[Mark]) → bool
Test whether replacing the range from to to (by index) with a node of the given type would leave the node's content valid.
*/
if (!$from.parent.canReplaceWith($from.index(),$from.index(),type)) {
console.error("insertStar will return false");
return false;
}
/*
replaceSelectionWith(node: Node,inheritMarks: ?bool) → Transaction
Replace the selection with the given node.
When inheritMarks is true and the content is inline,it inherits the marks from the place where it is inserted.
*/
dispatch(state.tr.replaceSelectionWith(type.create()));
return true;
}
好吧,我认为插入星星与标记无关,但为什么会失败?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。