我想创造这样的东西:
<ul>
<li>menu1
<ul>
<li>sub-menu1</li>
</ul>
</li>
<li>menu2</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
所以我使用WebSharper编写以下代码:
let el =
UL [
LI [
Text "menu1"
UL [
LI [Text "sub-menu1"]
]
]
LI [Text "menu2"]
]
Run Code Online (Sandbox Code Playgroud)
但它说
UL [
LI [Text "sub-menu1"]
]
Run Code Online (Sandbox Code Playgroud)
应该有类型,IPagelet但目前有类型Element.
有没有人知道如何使用WebSharper在li元素下放置文本+其他东西?
编辑:只是说我有stakc的错误,我无法评论或接受@Tarmil的答案...
这里的问题是,在同一个列表两个元素,Text "menu1"并且UL [...],具有类型IPagelet和Element分别.Element是一个子类型IPagelet,所以这应该工作,但不幸的是F#类型的推断在这种情况下有一些困难.所以你需要通过施法UL [...]来帮助它IPagelet:
let el =
UL [
LI [
Text "menu1"
UL [
LI [Text "sub-menu1"]
] :> IPagelet
]
LI [Text "menu2"]
]
Run Code Online (Sandbox Code Playgroud)
事实上,如果组合器具有类型seq<IPagelet> -> Element而不是类型,则可以消除这个问题seq<#IPagelet> -> Element.我们可能会将它们改为未来,但由于它将是一个重大改变,我们将把它保留到下一个主要版本.