2016-05-16 5 views
1

1'm neu in Elm und versuchen 0,17 herauszufinden. 1'm gefragt, ob jemand hat Einblick, warum meine Daten in der Ansicht hier nicht machen. In der Chrome-Konsole 1 kann sehen, dass die GET-Anforderung erfolgreich hergestellt, aber es nie angezeigt werden tatsächlich auf der Seite. Die Daten 1 von der URL zurückbekommen sollte wie folgt sein:Elm 0,17 - JSON-Daten nicht Rendern einer Ansicht

[{ „title“: „. Entweder weil sie denunzieren“ „Inhalt“ „Es ist etwas zu vermeiden dank will Pleasures haben beschädigt, das kann oder oder abgelehnt ... sehr ärgerlich überhaupt wie die Beschwerden sie haben unseren Eifer Schmerzen Beschwerden Dienste Schmerz Fehler „}, {“ title „:“ Extremely Vorfall angenommen entweder zu kritisieren „“ Inhalt „“ die Anwesenheit von Freude lehnt jede Freude Vergnügen hassen die Zeiten Schmerz.. Schmerzen aufgrund quo fallen, die unerwünscht sind Läufe. adipisci mehr Freude, wenn etwas so gesegnet. jede noch so kleine oder gar keine Lust. Ihre Anwesenheit. „}]

module Questions exposing (..) 

import List 
import Html exposing (..) 
import Html.App 
import Html.Attributes exposing (..) 
import Html.Events as Events 
import Http 
import Json.Decode as Json exposing ((:=)) 
import Task exposing (..) 

main : Program Never 
main = 
    Html.App.program 
    { init = init 
    , update = update 
    , view = view 
    , subscriptions = \_ -> Sub.none } 

--MODEL 

type alias Question = 
    { title : String 
    , content : String } 

type alias Model = 
    { questions : List Question 
    } 

initialModel : Model 
initialModel = 
    { questions = [] 
    } 

questionsDecoder : Json.Decoder (List Question) 
questionsDecoder = 
    Json.list questionDecoder 

questionDecoder : Json.Decoder Question 
questionDecoder = 
    Json.object2 
     Question 
      ("title" := Json.string) 
      ("content" := Json.string) 

fetchData : Cmd Msg 
fetchData = 
    let 
    url = "http://localhost:3000/api/questions" 
    in 
    Task.perform FetchFail FetchDone (Http.get questionsDecoder url) 

--INIT 

init : (Model, Cmd Msg) 
init = 
    (initialModel 
    , fetchData) 

--UPDATE 

type Msg = NoOp 
    | FetchData 
    | FetchDone (List Question) 
    | FetchFail Http.Error 

update : Msg -> Model -> (Model, Cmd Msg) 
update message model = 
    case message of 
    NoOp -> 
     (model, Cmd.none) 
    FetchData -> 
     (model, fetchData) 
    FetchDone results -> 
     ({ model | questions = results } 
     , Cmd.none) 
    FetchFail error -> 
     (model, Cmd.none) 

-- VIEW 

questionView : Model -> Question -> Html Msg 
questionView model question = 
    div [ ] 
    [ h3 [ ] [text question.title] 
    , h5 [ ] [text question.content] 
    ] 

questionsListView : Model -> Html Msg 
questionsListView model = 
    ul [ ] 
    (model.questions |> List.map (questionView model)) 

view : Model -> Html Msg 
view model = 
    div [ ] 
    [ h1 [ ] [text "SLACK OVERFLOW"] 
    , questionsListView initialModel 
    ] 

Vielen Dank für jede Hilfe!

Antwort

3

Es scheint, dass Ihr in view Sie immer vorbei am initialModel:

view : Model -> Html Msg 
view model = 
    div [ ] 
    [ h1 [ ] [text "SLACK OVERFLOW"] 
    , questionsListView initialModel 
    ] 

1 erraten Sie pas wollen die model Sie als Parameter erhalten:

view : Model -> Html Msg 
view model = 
    div [ ] 
     [ h1 [ ] [text "SLACK OVERFLOW"] 
     , questionsListView model 
     ] 
+0

Oh wow, 1 übersehen völlig, dass . Dank !! Das reparierte es. – Ronu