0

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 ベータ版と互換性があると期待できますか、それともリリースされたときだけですか?

ありがとう!

4

1 に答える 1

2

作業中: https://bitbucket.org/IntelliFactory/websharper/issue/32/make-projects-net-45-compatible

于 2012-04-06T17:50:34.913 に答える