Seaside中嵌套 #call:的数量是否有限制?



我正在开发一个Seaside应用程序,我怀疑我已经到了无法再#call:另一个组件的地步。这不是我的WAComponent的问题,因为我尝试了其他最终出现在#call:的消息,例如#confirm:

我的应用程序中有 4 个嵌套#call:(我知道,我知道......但我不是在寻找设计建议,只是在这个:)的答案)。第 5 个只是重新加载页面,被调用的组件永远不会出现。

我搜索了文档,但对此一无所知,调试对我来说真的很困难,因为我不熟悉 Seaside 的内部代码。

这是Pharo 6.1下的Seaside 3.2。

谢谢!

嵌套的

#call: s 没有限制,正如 Johan 的评论中正确指出的那样。

在这种特殊情况下,#call:的"null"行为(即,只是重新加载页面)是由于父WAComponent#children方法中的错误。 这里发生的事情是:

  • 组件 A #render:组件 B,但组件 A#children:问题
  • 组件B希望#call:组件C
  • #call:不起作用,它只是重新加载了页面

正如 Seaside 文档所述,呈现另一个WAComponent的每个WAComponent都必须使用所有子组件的集合重新定义#children。很容易忘记实现这样做,因为大多数时候它不是一个阻碍。直到你发现自己陷入这种情况。

最新更新