2016-06-27 8 views
2

Ich habe es schwer, Liste von benutzerdefinierten Typen innerhalb der Ansichtsfunktion zu rendern. Dies ist das Modell:Wie rende Liste in Ulme?

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 
    } 

ich mehrere Ansätze mit List.map Funktion versucht, aber ich endete immer mit irgendeiner Art von Fehlermeldung auf.

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)) 

Antwort

6

Der zweite Parameter von ul sollte eine Liste von HTML-Elementen sein. Ihr zweiter Wert enthält eine Liste in einer Liste, da Sie sie mit eckigen Klammern umgeben haben. Ändern sie dies sollte Ihr Problem beheben:

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

Ich habe es versucht, aber ich habe einen anderen Fehler http://i.imgur.com/K03aq5D.png –

+0

Ich wette, dass Sie wahrscheinlich TaxonomyTerm als Typ Alias ​​anstelle eines neuen Typs, z. 'typ alias TaxonomyTerm = {id: Guid, ...}' –

+0

Aber dann würde ich eine Fehlermeldung über rekursiven Typ in TaxonomyTerm bekommen –

0

Für die Verwendung von ul vorherige Antwort zu sehen. Danke an Tschad.

Ich habe eine Ergänzung. Sie können keine rekursiven Datensätze erstellen. Sie sollten eine Struktur wie type TaxonomyTerm = TaxonomyTerm Guid String (List TaxonomyTerm) erstellen.

Verwandte Themen