我一直在尝试创建一个具有强大层次结构的丰富数据模型 - 假设“团队”有“成员” - 两者都是碎片。我已经成功创建了连接,并且团队可以使用_members对象。但是,我想在团队的“显示”页面上的窗口小部件中自动显示这些成员。在show.html内部(来自团队页面,从撇号 - 页面扩展),我想做类似的事情:
apos.singleton(data.piece,'members','members-widgets',data.piece._members)
我知道成员窗口小部件正常工作 - 我可以将其包含在其他区域中并将其更新为普通部件窗口小部件。
我一直无法找到一种方法来自动包含我已经拥有的成员对象。我尝试了几种不同的方法,并没有想出一种有效的方法。这可能吗?我完全错误地采取了这种方式吗?
答案 0 :(得分:0)
我是P' unk Avenue的Apostrophe的软件架构师。
小部件最初旨在作为允许用户编辑各种类型内容的机制。即使在"成员小部件的情况下,"这通常是正确的:内容来自其他地方编辑决定要显示哪些个人成员,或选择显示具有特定标记的成员,或选择显示所有成员。
相比之下,在"显示页面上,"没有什么可编辑的 - 正如你所说,你已经有了成员,你可以通过循环data.piece._members
来实现它们的渲染。没有选择,所以没有可编辑的小部件。
当然,代码重用是一件好事,我理解为什么在#34; show page"上展示相同的演示文稿是可取的。并在小部件中。
实现此目的的一种简单方法是在memberMacros.html
模块中创建members
文件,然后从窗口小部件widget.html
和{中导入该宏文件{1}}档案:
show.html
我认为这很好地解决了您的用例。
还有其他用例可以覆盖窗口小部件的字段,最终可能会导致我们在每个模板的基础上支持有限的窗口小部件字段覆盖。然而,还存在与此相关的成本,因为该数据需要通过小部件编辑器进行JSON化并来回传递。所以我们可能永远不会推荐它用于"主要内容"小部件。使用由窗口小部件和显示页面共享的nunjucks宏文件更有意义。