2012-03-24 52 views
0

我定义DU的各种类的支持我使用HTML中:F#3 WebSharper

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生成我的Class DU?

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

谢谢!

回答