2017-04-12 14 views
2

我想將文件上傳到我的Fable-Elmish,然後我可以將它發送到服務器進行處理。但是,我找不到任何文檔/樣本來說明這一點。這是我的更新功能:使用Fable-Elmish上傳文件

let update msg model : Model * Cmd<Msg> = 
    match msg with 
    | QueryResults -> 
     {model with results = None}, Cmd.ofPromise getData "" FetchSuccess FetchFailure 
    | FetchSuccess data -> 
     { model with results = Some data }, [] 
    | FetchFailure ex -> 
     Browser.console.log (unbox ex.Message) 
     Browser.console.log "exception occured" |> ignore 
     model, [] 
    | FileUploaded -> 
     Browser.console.log "file selected!" |> ignore 
     model, [] 

這是一個包含文件上傳查看功能的一部分:

R.input [ 
     Type "file" 
     OnChange (fun x -> FileUploaded |> ignore) 
    ] [] 

據我所知,這應該觸發更新,並打印出「文件已上傳!「到控制檯,但沒有任何事情發生。

如果任何人都可以指出我在正確的方向,這將是偉大的。

回答

1

您正在將FileUploaded消息傳遞給ignore,它的名稱如下:忽略它的參數並且什麼都不做。所以這個消息實際上不會去任何地方。

使用Fable-Elmish,您的視圖函數接受一個名爲dispatch的參數,該參數將接收消息並將其放入消息隊列(以便update稍後將接收消息)。有關詳細信息,請參閱the TodoMVC sample,尤其是onEnterviewModel函數。

基本上,您的OnChange (fun x -> FileUploaded |> ignore)行應該是OnChange (fun x -> FileUploaded |> dispatch)