如何从古腾堡块中读取内联css?

时间:2019-01-25 作者:Bram

我正在建造一个简单的古腾堡街区。

Attributes

    attributes: {
        sign: {
            type: \'string\',
            source: \'text\',
            default: \'+\'
        },
        size: {
            type: \'string\',
            default: 16,
            selector: \'.plusblok\',
            source: \'attributes\',
            attributes: \'style\',
            property: \'font-size\'
        }
    },

edit

        var attr = props.attributes;

        return [
            el(InspectorControls, {key: \'inspector\'}, 
                el(components.PanelBody, {
                        title: \'Details\',
                        initialOpen: true
                    },
                    el(TextControl, {
                        type: \'text\',
                        value: attr.sign,
                        label: \'Teken\',
                        onChange: function (newSign) {
                            props.setAttributes({ sign: newSign})
                        }
                    }),
                    el(
                        RangeControl, {
                            label: \'Grootte (in px)\',
                            value: attr.size,
                            initialPosition: 16,
                            min: 8,
                            max: 48,
                            onChange: function( newSize ) {
                                props.setAttributes({ size: newSize })
                            }
                        }
                    )
                )
            ),
            el(\'div\', {className: props.className},
                el(\'div\', {
                    className: \'plusblok\',
                    style: {
                        fontSize: attr.size + \'px\',
                        }
                    },
                    attr.sign
                )
            )
        ]

save

        var attr = props.attributes;

        return (
            el(\'div\', {className: props.className},
                el(\'div\', {
                        className: \'plusblok\',
                        style: {
                            fontSize: attr.size + \'px\',
                        }
                    },
                    attr.sign
                )
            )
        )
问题在于“选择”font-size 并将值读入attributes-部分当前代码是以下代码的组合this issuethis page in the handbook, 但它不起作用。我做错了什么?

1 个回复
最合适的回答,由SO网友:Bram 整理而成

原来Gutenberg还有另一种存储属性值的方法:块的注释分隔符:

如果未指定属性源,则属性将保存到块的注释分隔符中(并从中读取)。

source

当我检查数据库条目时,我确实在那里找到了size属性:

<!-- wp:XXX {"size":48} -->
    <div>...</div>
<!-- /wp:XXX -->
问题是号码48 在此注释分隔符中格式化为数字,但定义为string 在属性部分中。一旦我改变了这一点并删除了所有的选择器行,它就工作得很好。

attributes: {
    sign: {
        type: \'string\',
        source: \'text\',
        default: \'+\'
    },
    size: {
        type: \'number\',
        default: 16,
    }
},