将样式应用于表格时,如何同时将样式应用于表格和所有单元格

时间:2020-03-24 15:26:34

标签: javascript ckeditor ckeditor5

我必须修改Ckeditor 5表格插件,以便能够将样式同时应用于表格和所有单元格。 https://ckeditor.com/docs/ckeditor5/latest/api/table.html

有什么简单的方法吗? 当前,我遍历表子项并应用相同的样式,但这不是正确的方法。因为该值不会在单元格的字段中更新。 这是更改表属性时触发的一些代码。

export function downcastTableAttribute(conversion, modelAttribute, styleName) {
    conversion.for('downcast').add(dispatcher => dispatcher.on(`attribute:${modelAttribute}:table`, (evt, data, conversionApi) => {
        const {item, attributeNewValue} = data;
        const {mapper, writer} = conversionApi;

        if (!conversionApi.consumable.consume(data.item, evt.name)) {
            return;
        }

        const table = [...mapper.toViewElement(item).getChildren()].find(child => child.is('table'));

        if (attributeNewValue) {
            writer.setStyle(styleName, attributeNewValue, table);
            //Apply style to cell td too
            table._children[0]._children.forEach(row => {
                row._children.forEach(td => {
                    writer.setStyle(styleName, attributeNewValue, td);
                });
            })
            //Apply style to cell td too
        } else {
            writer.removeStyle(styleName, table);
            table._children[0]._children.forEach(row => {
                row._children.forEach(td => {
                    writer.removeStyle(styleName, td);
                });
            })
        }
    }));
}

更新

enter image description here

从照片中您可以看到,该字段未更新,与表格的真实颜色相对应。

什么是正确的方法?

1 个答案:

答案 0 :(得分:1)