2017-10-29 1 views
0

Ich habe folgende Typen im Modell:Elm lang Einfügen Listenelemente in übergeordneten Container

type alias NetworkList = 
    { networks : (List Network) } 

type alias Network = 
    { name: String } 

Und sobald ich sie laden, möchte ich in einer View-Funktion eine ul Liste anzuzeigen. Ich habe diese Art von Lösung gefunden durch jedes Kind in der Liste iterieren:

networkPickContent: NetworkList -> Html Msg 
networkPickContent networks = 
    networks 
     |> List.map networkRow 
     |> ul [ class "my_class" ] 


networkRow: Network -> Html Msg 
networkRow network = 
    li [] [ text network.name ] 

kann aber nicht wirklich damit es funktioniert, Debugger gibt Fehler:

The right side of (|>) is causing a type mismatch. 

    networks 
     |> List.map networkRow 

(|>) is expecting the right side to be a: 

    NetworkList -> a 

But the right side is: 

    List Network -> List (Html Msg) 

Was bin ich in diese falsch zu machen Fall? Ist es sinnvoll, List.map für diese Art von Zweck zu verwenden, oder gibt es eine bessere Möglichkeit, alle untergeordneten Elemente anzuzeigen?

+1

Nur eine Anmerkung, jetzt, da Sie die Lösung haben. Es gibt keinen Grund, warum Sie nicht 'type alias NetworkList = List Network' hätten sagen können. – z5h

Antwort

2

NetworkList ist ein Datensatz mit Netzwerken als Schlüssel. Versuchen Sie das folgende stattdessen

networkPickContent: NetworkList -> Html Msg 
networkPickContent networkList = 
    networkList.networks 
     |> List.map networkRow 
     |> ul [ class "my_class" ] 
+1

Hey @Simon, vielen Dank! Verdammt, ich kann nicht glauben, dass ich das vermisst habe. Ich wünsche ihnen einen wunderbaren Tag! – Ilya

Verwandte Themen