我想创造类似的东西:
<ul>
<li>menu1
<ul>
<li>sub-menu1</li>
</ul>
</li>
<li>menu2</li>
</ul>
所以我使用WebSharper编写以下代码:
let el =
UL [
LI [
Text "menu1"
UL [
LI [Text "sub-menu1"]
]
]
LI [Text "menu2"]
]
但是它说
UL [
LI [Text "sub-menu1"]
]
的类型应为IPagelet
,但目前的类型为Element
。
有没有人知道如何使用WebSharper在li元素下放置文本+其他内容?
编辑:只是说我有一个关于stakc的错误,我无法评论或接受@Tarmil的答案...
答案 0 :(得分:8)
此处的问题是,同一列表中的两个元素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"]
]
事实上,如果组合器的类型为seq<IPagelet> -> Element
而不是seq<#IPagelet> -> Element
,则会消除此问题。我们可能会将它们改为未来,但由于这将是一次重大变革,我们会将其保留在下一个主要版本中。