【问题标题】:Multiple inputs in Elm?Elm 中的多个输入?
【发布时间】:2014-11-05 02:04:18
【问题描述】:

是否可以在 Elm 中使用一个事件处理程序触发多个输入句柄?例如,假设我有以下内容:

button 
    [ type' "button", on "click" getAnything go.handle (\_ -> searchInput) ] 
    [ text "Go" ]

在这种情况下,单击 Go 按钮会将值发送到 go 输入。我想要的是在同一个点击事件上将不同的值发送到不同的输入(例如,go2 输入)。

有什么方法可以说是组合输入还是让一个输入扇出多个信号?

【问题讨论】:

    标签: elm


    【解决方案1】:

    您可以让一个输入扇出多个信号。我不知道组合输入的方法。

    扇出基本上意味着您通过将两个不同的值包装在一个元组中将它们发送到同一个输入。然后将您的输入分散到多个信号将涉及以下内容:

    signalUnzip : Signal (this,that) -> (Signal this, Signal that)
    signalUnzip signal = (fst <~ signal, snd <~ signal)
    
    go : Input (String,Int)
    go = input ("",0)
    
    (goFanoutPart1,goFanoutPart2) = signalUnzip go.signal
    -- goFanoutPart1 : Signal String, goFanoutPart2 : Signal Int
    

    【讨论】:

    • 感谢您的回复。我最终以稍微不同的方式解决了这个问题,即在同一输入上生成另一个信号,然后将其与原始信号合并。
    • 如果你好奇,可以在这里查看交叉帖子:reddit.com/r/elm/comments/2lbpk9/multiple_event_handlers
    • @Andrew 你能在这里回答你自己的问题,并包含一些代码吗?阅读交叉帖子后,我对您到底想要什么感到更加困惑......
    • 抱歉评论迟了,但最初的激励用例是在 Http 请求完成时显示加载图像。我的解决方案是使用合并复制信号。你可以在我的 Gist 中看到它应该在 Elm 0.13 中编译:gist.github.com/smiley325/f1d2759dbe33af5d43e3,希望能解释更多
    • 特别是第 58/59 行,我使用了两次 go.signal
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多