在视图中显示整数

Display an integer in a view

我是 Giraffe 的新手,在显示整数时遇到困难。我的型号是

type Person =
    {
        FirstName   : string
        LastName    : string
        Age         : int
    }

我的观点是:

let index2 (model : Person) =
    [
        partial()
        p [] [
            encodedText model.FirstName
            br []
            encodedText model.LastName
            br []
            int model.Age
        ]
    ] |> layout

返回的错误信息是“列表的所有元素必须是同一类型。那么如何显示年龄?

我不太熟悉长颈鹿(而是寓言),所以我不知道要安装什么并设置重现它。

然而,查看 p [] [ ... ],很明显该函数需要一个列表作为第二个参数,因此所有元素都应该是同一类型。

让我们看看里面。根据 GiraffeViewEngine.fs, encodedText returns Text 这是 XmlNode DU:

的情况
type XmlNode =
    | ParentNode  of XmlElement * XmlNode list
    | VoidElement of XmlElement
    | Text        of string

所以这设置了整个列表的类型,XmlNode

br 函数定义为 let br = voidTag "br" 其中 voidTag 函数 returns VoidElement 这是 XmlNode DU 中的另一种情况,所以没关系。

所以我不知道你想通过 int model.Age 说什么, int 实际上是 F# 中的 operator 将对象转换为整数。无论如何,它不会 return 任何 XmlNode 类型的东西。相反,尝试

p [] [
    encodedText model.FirstName
    br []
    encodedText model.LastName
    br []
    encodedText (string model.Age)
]

因此你会 ToString 年龄,它会变成 Text 的情况 XmlNode 并且代码应该编译。