1

在某些情况下,我无法将富文本的内联编辑保存回数据库。

请耐心等待,这里会粘贴一些代码,因为这是我描述我正在做的事情的唯一方式。

我的项目中有两种自定义小部件 - 只有一个小部件实例,通常在lib\modules目录中定义如下:

article-widgets
    - views
    -    - widget.html
    - index.js

然后是重复的小部件,可以在站点周围的多个地方使用,通常定义如下:

employees
    - index.js
employees-widgets
    - views
    -    - widget.html

这个我可以工作:

在第一种我定义的富文本中article-widgets\index.js

{
    name: 'ingress',
    label: 'Ingress',
    type: 'area',
    required: true,
    options: {
        widgets: {
            'apostrophe-rich-text': {
                toolbar: ['Bold', 'Italic', 'Link', 'Unlink' ]
            }
        }
    }
}

然后在article-widgets\views\widget.html

{{ apos.singleton(data.widget, 'ingress', 'apostrophe-rich-text',{
    toolbar: [ 'Bold', 'Italic', 'Link', 'Unlink' ]
}) }}

这个对我不起作用:

在第二种类型中 - 我可以内联编辑,但不会保存更改。

employees\index.js

{
    name: 'body',
    label: 'Beskrivelse',
    type: 'area',
    options: {
        widgets: {
            'apostrophe-rich-text': {
                toolbar: ['Bold', 'Italic', 'Link', 'Unlink']
            }
        }
    }
}

然后在employees-widgets\views\widget.html

{% for piece in data.widget._pieces %}
    <div>
        {{
            apos.singleton(piece, 'body', 'apostrophe-rich-text', {
                toolbar: [ 'Bold', 'Italic', 'Link', 'Unlink' ]
            })
        }}
    </div>
{% endfor %}

我不明白为什么后者不起作用。我做错了什么 - 还是不可能对重复项目进行内联编辑?

4

1 回答 1

0

Apostrophe 的微妙之处之一是任何以下划线 (_) 开头的属性(除了 _id实际上都不是父对象的一部分,并且更改不会返回到数据库

这些是 Apostrophe 在检索过程中为方便起见而附加的属性。

我不认为从小部件修改片段是默认情况下烘焙的(通常片段小部件是内容的单一服务视图),但可以设置自定义后端功能。

不是您的问题的总比例为 1:1,但如果您查看这个(粗略)示例中的commentsandcomments-widgets模块,您可以看到我们正在通过小部件修改文章的内容。

https://github.com/stuartromanek/apostrophe-comment-system/tree/master/lib/modules

于 2017-08-26T18:24:00.710 回答