【问题标题】:Apostrophe pageBeforeSend : extended data is lost after editing widget撇号 pageBeforeSend :编辑小部件后扩展数据丢失
【发布时间】:2018-02-16 00:21:13
【问题描述】:

我目前正在发现 Apostrophe 并尝试创建一个小部件

我想将外部数据附加到来自 mongo 字段的数据中 如教程中所述,我使用pageBeforeSend(和“超级”模式)

它有效。我的外部数据在 nunjucks 中可用(通过apos.area),我可以使用它!

但是,如果我编辑我的小部件以修改某些“mongo”字段,则返回时,pageBeforeSend 不会被调用,并且我没有外部数据。如果然后刷新整个页面,它将再次恢复。

我的问题:pageBeforeSend 是追加外部数据的好方法吗?如何强制小部件在退出其编辑模式时调用 pageBeforeSend(或其他),以便外部数据可以再次可用?

我的代码:(data.my_extended 将是一个对象数组)

construct: function(self, options) {
    let superPageBeforeSend = self.pageBeforeSend;
    self.pageBeforeSend = function(req) {
        req.data.my_extended = 'some extra information not in fields';
        return superPageBeforeSend(req, function() {
          req.data.my_extended = 'some extra information for testing';
        });
    };

提前致谢

【问题讨论】:

    标签: apostrophe-cms


    【解决方案1】:

    如果您希望小部件在每次加载时执行自定义操作,您可以改写 load 方法。

    这个SO question有相关代码sn-p

    How-to access widget data in helper

    【讨论】:

    • 似乎是正确的做法!谢谢 !!顺便说一句,我还需要访问我的小部件的一个字段,因为我的扩展数据取决于其中一个。我会看看它是否在那个级别可用(要学习的东西很多)
    • 每个小部件的内容应该在加载方法中名为widgets的对象数组中
    【解决方案2】:

    我刚刚找到了sanitize() 方法来覆盖

    通过再次附加我的扩展数据来完成部分工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-09
      • 2019-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多