以下是我尝试生成的一些HTML示例:
<div>
<input type="checkbox" id="checkbox_1" name="checkbox_1" />
<label for="checkbox_1"></label>
</div>
这是我的垂头丧气的转换器:
conversion.for( 'downcast' ).elementToElement( {
model: 'checkbox',view: ( modelElement,viewWriter ) => {
const div = viewWriter.createContainerElement( 'div',{} );
const input = viewWriter.createEmptyElement( 'input',{'type': 'checkbox'} );
const label = viewWriter.createEditableElement( 'label',{} );
viewWriter.insert( viewWriter.createPositionAt( div,0 ),input );
viewWriter.insert( viewWriter.createPositionAt( div,1 ),label );
return toWidgetEditable( div,viewWriter );
}
} );
在CKEditor 5检查器中,我可以看到视图是这样呈现的:
<div contenteditable="true" class="ck-editor__editable ck-editor__nested-editable">
<input type="checkbox" />
<label>
</label>
</div>
在编辑器中,我无法在标签或周围的div中添加文本。
如果将div
的声明从createContainerElement
更改为createEditableElement
,我可以在div中插入文本,但是仍然无法编辑标签。
如何设置转换器,以便在<input>
上贴上可编辑的标签?我尝试查看todolist
中的ckeditor5-list
代码,但是它根本不使用conversion.for
或elementToElement
,所以我有点迷路了。>