在海边嵌套的#call:的数量有限制吗?

时间:2018-12-26 20:51:47

标签: pharo seaside pharo-6

我正在开发Seaside Application,我怀疑已经达到无法再使用#call:其他组件的地步了。 这不是我的WAComponent的问题,因为我尝试了其他以#call:结尾的消息,例如#confirm:

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

我搜索了文档,但是却一无所获,由于我不熟悉Seaside的内部代码,调试对我来说真的很困难。

这是Pharo 6.1下的Seaside 3.2。

谢谢!

1 个答案:

答案 0 :(得分:0)

嵌套的#call:不受限制,正如约翰评论中正确指出的那样。

在这种特定情况下,#call:的“空”行为(即,仅重新加载页面)是由于父级#children的{​​{1}}方法中的错误引起的。这里发生的是:

  • 组件 A WAComponent是组件 B ,但是组件 A #render:却有错误
  • 组件 B 想要#children:组件 C
  • #call:无效,它只是重新加载了页面

正如Seaside documentation所述,每个渲染另一个#call:的{​​{1}} 必须用所有子组件的集合重新定义WAComponent。容易忘记执行此操作,因为在大多数情况下,这并不是一个障碍。直到您陷入这种情况为止。