HTML 内で使用するさまざまなクラスの DU を定義しています。
type Class =
| Logo
| Screen
| Continue
残念ながらFSharpValue.GetUnionFields
、JS に変換されず (私は期待していません)、JS に変換されるように DU で ToString をオーバーライドしても機能しないようです。そのため、Dom 要素からのクラスの追加/削除を処理するために、次の演算子を定義しました。
[<JavaScript>]
let getClassString = function
| Logo -> "logo"
| Screen -> "screen"
| Continue -> "continue"
[<JavaScript>]
let inline (|+>) (x : Element) (c : Class) = x.AddClass (getClassString c); x
[<JavaScript>]
let inline (|->) (x : Element) (c : Class) = x.RemoveClass (getClassString c)
それは本当にそれを至福にします:
[<JavaScript>]
let mainMenu =
Div [
H2 [Text "Jewel"; Br [] :> _; Text "Warrior"] |+> Logo
[
"Play", gameScreen
"HighScore", highScores
"About", notReady
"Exit", notReady
] |> Seq.map (fun (text, screen) -> LI [Button [Text text] |>! OnClick (fun _ _ -> show screen)])
|> UL |+> Menu
] |+> MainMenu |+> Screen
CSS から直接クラス DU を生成するのに F# 型プロバイダーが適していることを誰かが確認できますか?
WebSharper は VS11 ベータ版と互換性があると期待できますか、それともリリースされたときだけですか?
ありがとう!