2016-06-27 22 views
2

我很难在视图函数内呈现自定义类型列表。 这是模型:如何在elm中呈现列表?

type alias Guid = String 
type alias User = String 

type alias TaxonomyCategory = 
    { id : Guid 
    , name: String 
    , updatedAt: Date 
    , updatedBy: User 
    , terms: List TaxonomyTerm 
    } 

type TaxonomyTerm = 
    TaxonomyTerm 
    { id : Guid 
    , name: String 
    , terms: List TaxonomyTerm 
    } 

我试着用List.map功能的几种方法,但我总是结束了某种错误的消息。

The 2nd argument to function `ul` is causing a mismatch. 

120|  ul 
121|   [] 
122|>  [ List.map renderTaxonomyTerm tc.terms ] 

Function `ul` is expecting the 2nd argument to be: 

    List (VirtualDom.Node a) 

But it is: 

    List (List (Html a)) 

回答

6

ul的第二个参数应该是Html元素的列表。你的第二个值包含列表中的一个列表,因为你用括号括起来了。它更改为这应该解决您的问题:

ul 
    [] 
    (List.map renderTaxonomyTerm tc.terms) 
+0

我试过了,但我得到了另一个错误http://i.imgur.com/K03aq5D.png –

+0

我打赌你可能想要定义TaxonomyTerm作为类型别名而不是新类型,例如, 'type别名TaxonomyTerm = {id:Guid,...}' –

+0

但是然后我会在TaxonomyTerm中得到一个有关递归类型的错误 –

0

对于使用ul看到前面的回答。感谢乍得。

我有一个补充。您不能创建递归记录。您应该创建像type TaxonomyTerm = TaxonomyTerm Guid String (List TaxonomyTerm)这样的结构。