2014-11-05 61 views
2

是否有可能在Elm中用一個事件處理程序觸發多個輸入句柄?例如,假設我有以下幾點:Elm中的多個輸入?

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

在這種情況下,點擊Go按鈕將值發送到go輸入。我想要的是發送一個不同的值到同一個點擊事件上的不同輸入(例如輸入go2)。

有什麼方法可以說,將輸入合併或將輸入扇形輸出到多個信號?

回答

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 
+0

感謝您的回覆。我最終以一種稍微不同的方式解決了這個問題,在同一個輸入上生成另一個信號,並將它與原始信號合併。 – 2014-11-05 22:30:48

+0

如果你好奇,你可以在這裏查看交叉帖子:http://www.reddit.com/r/elm/comments/2lbpk9/multiple_event_handlers/ – 2014-11-05 22:31:29

+0

@Andrew你能回答你自己的問題嗎?一些代碼?在閱讀完交叉文章後,我只是更加困惑於你想要的東西...... – Apanatshka 2014-11-25 09:42:01