2017-04-01 81 views
2

我是相當新的榆樹。我目前正試圖教自己如何在Elm中進行API調用。我正在製作的程序非常簡單,它會通過http請求獲取一些Trello卡信息並顯示它。我的程序編譯但沒有反應,當我點擊按鈕來獲取信息。我不確定我做錯了什麼,請幫忙。謝謝榆樹HTTP API調用

module Main exposing (..) 

import Html exposing (..) 
import Html.Attributes exposing (..) 
import Html.Events exposing (..) 
import Http 
import Json.Decode as Decode 


main : Program Never Model Msg 
main = 
    program 
     { init = init 
     , view = view 
     , update = update 
     , subscriptions = subscriptions 
     } 


type alias Model = 
    { boardName : String 
    , cardName : String 
    } 


init = 
    (Model "Default Board" "Default Card" 
    , Cmd.none 
    ) 



-- UPDATE 


type Msg 
    = CardFetch (Result Http.Error String) 
    | FetchCard 


update : Msg -> Model -> (Model, Cmd Msg) 
update msg model = 
    case msg of 
     FetchCard -> 
      (model, getCardName) 

     CardFetch (Ok incomingName) -> 
      (Model model.cardName incomingName, Cmd.none) 

     CardFetch (Err _) -> 
      (model, Cmd.none) 



-- HTTP 


getCardName = 
    Http.send CardFetch (Http.get "https://api.trello.com/1/members/..." decodeCard) 


decodeCard = 
    Decode.at [ "data", "card", "name" ] Decode.string 



--UPDATE 
-- VIEW 


view : Model -> Html Msg 
view model = 
    div [] 
     [ div [] 
      [ button [ onClick FetchCard ] [ text "Get Card" ] ] 
     , div [ class "card" ] 
      [ h3 [] [ text model.cardName ] 
      , div [ class "board" ] [ h4 [] [ text model.boardName ] ] 
      ] 
     ] 



-- SUBSCRIPTIONS 


subscriptions : Model -> Sub Msg 
subscriptions model = 
    Sub.none 
+0

你吸收可能發生在Err CardFetch所有錯誤解碼案件。嘗試將錯誤消息寫入屏幕或使用Debug.log將其打印到瀏覽器控制檯。 –

+0

非常感謝您的幫助。我在控制檯得到了以下錯誤: 錯誤:{TYPE =「節點」,分支= []} 我猜我沒有配置我期待回到井JSON的結構。你知道如何在具有形狀JSON對象引用值: [ {數據:{ 卡:{名稱:...}} } , {}, {} ] 我試圖達到名稱值。感謝 – ohenecoker

+0

你能發表一個你希望從你的問題中得到的json的例子嗎? –

回答

1

終於搞明白了。我不得不把它與Decode.index 0陣列(Decode.at [「數據」,「卡」,「名」] Decode.string)