我正在尝试根据他的ID在模型中找到一个元素。 浏览文档,看来Matcher类可以满足我的需要。
但是,我无法创建Matcher实例,那里的所有示例仅显示了如何使用Matcher,而不是如何创建实例。
抱歉,这是一个愚蠢的问题,但是如何创建新的Matcher实例?
答案 0 :(得分:0)
如果要对模型进行操作,则应使用与engine/model
相关的类。您提到的Matcher
属于engine/view
,因此不适合模型操作。
如果您想遍历模型并对其进行操作,则可以使用TreeWalker类。您只需要在整个模型上创建范围,或在开始处创建开始位置即可。
另一个选择可能是获取root element并递归遍历其children。
例如,您可以通过以下方式利用树助行器:
const txt = ( editor => {
const position = new Position( editor.model.document.getRoot(), [ 0 ] );
const walker = new TreeWalker( { startPosition: position } );
for ( const element of walker ) {
// do sth with 'element'
// but be careful on element boundaries
}
return outputText;
} )( this.editor );
您可以在此处递归地遍历孩子,其中rootElement
可以用作输入元素。
function getAllTextFromElementAndChildren( element ) {
if( element.is( 'text' ) ){
return elemen.data;
}
let text = '';
for ( const child of element.getChildren() ) {
const childText = getAllTextFromElementAndChildren( child );
text += childText;
}
return text;
}