以下代码将 reflex-dom 下拉元素直观地显示为列表框,并始终在底部显示最后选择(单击)的行。
{-# LANGUAGE OverloadedStrings #-}
import Reflex.Dom
import qualified Data.Text as T
import qualified Data.Map as Map
import Data.Monoid((<>))
import Data.Maybe (fromJust)
main :: IO ()
main = mainWidget $ el "div" $ do
dd <- dropdown "2" (constDyn countries) $ def & attributes .~ constDyn ("size" =: "10")
el "p" $ return ()
let selItem = result <$> value dd
dynText selItem
return ()
countries :: Map.Map T.Text T.Text
countries = Map.fromList [("1", "France"), ("2", "Switzerland"), ("3", "Germany"), ("4", "Italy"), ("5", "USA")]
result :: T.Text -> T.Text
result key = "You selected: " <> fromJust (Map.lookup key countries)
我想更改此代码,因此它始终显示在底部最后双击的行!
我尝试了几件事
- 使用domEvent函数:这不起作用,因为Dropdown不是HasDomEvent类的实例。
- 在 Dropdown 记录的值_dropdown_change中过滤事件。但我没有找到任何方法来仅过滤 DoubleClick 事件。
- 使用新类型 EventSelector。我再一次看不到我可以使用它。
问题:如何获得双击事件?