使用Fable-Elmish上传文件

时间:2017-04-12 22:30:16

标签: f# elm fable-f#

我想将文件上传到我的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)
    ] []

据我所知,这应该会触发更新并打印出上传文件!&#34;到控制台,但什么也没发生。

如果有人能指出我在这方面的正确方向那将是伟大的。

1 个答案:

答案 0 :(得分:2)

您正在将FileUploaded消息传递给ignore,这就是其名称所说的内容:忽略其参数并且不执行任何操作。所以这条消息实际上不会去任何地方。

使用Fable-Elmish,您的视图函数采用名为dispatch的参数,该参数将接收消息并将其放入消息队列(以便update将在以下位置接收消息:一些晚些时候)。有关详细信息,请查看the TodoMVC sample,尤其是onEnterviewModel函数。

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