smalltalk - 渲染前后的海边 Hook

标签 smalltalk pharo seaside

我想看看 Seaside 中是否有一个在渲染之前调用的钩子(Hook),以及一个在渲染之后调用的钩子(Hook)。碰巧我想在屏幕上显示一个通知,我希望渲染完成后,修改这个组件,以便下次渲染完成时不再显示。
谢谢并恭祝安康!

最佳答案

Seaside 没有“钩子(Hook)”,而是 component decorations你可以包裹一个组件来改变它们的行为。如果你包装你的根组件,你可以实现一个装饰,在整个组件树上渲染之前和之后调用钩子(Hook)。
但是,在渲染时更改组件的状态会破坏 Seaside 为您提供的状态回溯行为。状态更改应该发生在操作回调中。因此,没有“渲染后”阶段可以更改组件的状态(嗯,可以,但会导致 subtle problems )。相反,请使用操作阶段(即回调)来更改组件的状态,以便下次调用渲染阶段时,不会显示您的组件。
我假设当您说“下一次渲染完成”时,这意味着在用户单击链接或执行其他操作之后。这意味着您可以在执行操作回调时更改状态并安排渲染树的状态,以便不再显示相关组件。如果您这样做,用户将在单击浏览器中的后退按钮时再次看到该组件。

关于smalltalk - 渲染前后的海边 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62684156/

相关文章:

pharo - 如何在 Pharo 中显示进度条?

jquery - 为什么我在seaside 2.9中使用 'jQuery ajax'时没有发生服务器端回调?

stream - 将代码移植到Pharo 2.0

math - 为什么算术+和-的Pharo定义基本上是重复的代码?

smalltalk - 可以在vm窗口外与opencv和screen交互吗?

components - 如何简单地重定向到另一个顶级 Seaside 组件?

smalltalk - 如何在 Nautilus 中向上下文菜单添加条目?

smalltalk - 试图从 OrderedCollection 中检索元素

javascript - 如何在海边应用程序中嵌入谷歌分析脚本(新版本)

web-applications - 有没有一种简单的方法可以将 API 添加到 Seaside Web 应用程序?