我使用组合器构建了一个 WebSharper formlet,但我的目标是将它嵌入到 jQueryUI 弹出窗口中。因此,当用户单击“否”时,我需要能够关闭对话框,以下内容不起作用:
let confirmationForm order =
let title = DialogConfiguration(Title = "Are you sure you want to place the order?")
let form = Formlet.Return ()
|> Enhance.WithCustomSubmitAndResetButtons
{ Enhance.FormButtonConfiguration.Default with Label = Some "Yes" }
{ Enhance.FormButtonConfiguration.Default with Label = Some "No" }
|> Enhance.WithFormContainer
let rec dialog = Dialog.New(Div [ result ], title)
and result =
Formlet.Do {
let! _ = form |> Enhance.WithResetAction (fun _ -> dialog.Close(); true)
dialog.Close()
return Server.SubmitOrder order
} |> Enhance.WithFormContainer
(dialog :> IPagelet).Render()
Formlet.Do {
let! order = orderForm
return confirmationForm order
}
|> Enhance.WithFormContainer
单击是,对话框关闭正常。此外,我不理解要求我提供返回 true 的函数的签名,这有点令人困惑,因为我不需要提供任何其他回调。
另外,请注意,我很惊讶它支持相互递归函数以允许向 Dialog 的 Div 提供工作流。我假设会有更好的方法来做到这一点?
谢谢!