0

我正在为我在 HTML 中使用的各种类定义一个 DU:

type Class =
    | Logo
    | Screen
    | Continue

现在不幸FSharpValue.GetUnionFields的是,它不能转换为 JS(我不希望它),并且覆盖 DU 上的 ToString 以使其转换为 JS 似乎也不起作用。因此,我定义了以下运算符来处理从 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

有人可以确认 F# 类型提供程序非常适合直接从 CSS 生成我的 DU 类吗?

我们可以期望 WebSharper 与 VS11 beta 兼容还是仅在它发布时兼容?

谢谢!

4

1 回答 1

2

处理它:https ://bitbucket.org/IntelliFactory/websharper/issue/32/make-projects-net-45-compatible

于 2012-04-06T17:50:34.913 回答