海边 - 重新渲染的清晰形式?

时间:2013-07-12 01:13:47

标签: smalltalk seaside

有没有办法在重新渲染页面时重置页面的所有文本输入?该页面继续加载前一个渲染中仍然在输入中的文本。

1 个答案:

答案 0 :(得分:2)

这在很大程度上取决于您呈现这些输入的方式。如果您使用Seaside组件,那么您可以在回调中实现自己的逻辑:

html textInput
    callback: [ :value | self setOrResetMyInputWith: value ]
    with: 'my input'.

#setOrResetMyInputWith:可能如下所示:

setOrResetMyInputWith: aString
    myInputValue := self allCriteriaMet
        ifTrue: [ aString ]
        ifFalse: [ nil ]

请记住,您无法预测回调的评估顺序。因此,在渲染之前进行检查可能更容易:

renderContentOn: html
    self checkMyInputs.
    "continue rendering process"
    ...

如果不满足条件,您可以简单地重置实例变量。

那是组件。如果你使用Magritte,那么Magritte的验证机制应该照顾好这一点。您需要做的就是在相应的描述中启用验证。