7

情景

我一直在 Cro 中使用模板(记录在https://cro.services/docs/reference/cro-webapp-template),并且很高兴其中有子。

我目前有一个“主”模板和一些报告,比如说report1、report2 和report3。

假设从report3 开始,我想包含report1 的数组。

现在,假设每个报告都有以下子项:

  • init:一些 Javascript 初始化代码(应该只包含一次,无论使用了多少报告实例)

  • HTML:报告的每个实例都应包含的一些 HTML 代码(带有一些参数来区分它,但由于 Javascript 框架的限制,可能不包含任何<script><style>标签

  • 数据:每次包含报告时都必须重复的 Javascript 片段

目前我在模板中的一个单独的子中都有上述每一个。

问题

Redeclaration of symbol '&__TEMPLATE_SUB__report-initial'.

问题

虽然我可以将报告名称(例如“report1”)传递给主模板,但我缺少的是让主模板调用已传入的报告名称上的 subs 的方法,因为可能有多个涉及的报道。

我尝试过的想法

理想的情况是,如果我能以某种方式创建一个从模板继承的“报告”类,并将模板类的实例传递到主报告中,然后将 subs 作为报告类上的方法调用。但是,我一直无法找到一种方法来做到这一点。

我可以在这里看到三个可能的选项:

  • 我的困难可能是我没有想到“The Cro Way”。如果有更好的方法来实现我想要做的事情,请告诉我
  • 可能有一种方法可以实现我想要的,而我只是无法理解文档(或者它可能丢失了)
  • 虽然不太可能,但 Cro 的设计可能并未考虑到这种可能性。

任何人都可以提供的任何帮助将不胜感激。

谢谢!

编辑:我认为一个可以有多个(命名的)“body”的宏可以解决这个问题。

4

2 回答 2

4

It looks like &__TEMPLATE_SUB__report1-initial is a global that is redeclared when you import report1 into report3. May I suggest to try and use template fragments instead of the whole template?

于 2021-11-13T07:33:40.280 回答
3

我对您的问题的初步回答是“请您提供一个最小的可重现代码示例,以便我们可以更深入地了解上下文并有一些我们可以试验的东西”

我目前对您需要的理解是“在 Cro 模板设置中使用 raku 样式类和对象(带有回调)” - 并且执行此操作的标准方法(例如对嵌套主题变量的关联访问)过于有限

就其本身而言,这不一定是 raku / Cro 的弱点,因为模板俚语的功能需要受到限制以避免潜在的安全问题,并且与大多数模板系统一样,它比成熟的编码语言更平淡无奇

我的猜测是,Cro模板部件可以将 Web 部件分块并进出(真正的 raku)根块,这取决于你如何分块,处理你描述的报告数据结构 - 你试过这个吗?

如果这仍然不成立,有几种方法可以扩展选项,例如依赖注入和路由处理程序

于 2021-11-21T22:52:52.553 回答