Elm检查是否按了ctrl键单击
使用elm html,如何检查单击时是否按下了ctrl键 “control key down”(控制键关闭)是否是我需要在其他地方保持的状态,可能是使用键盘模块?如果是这样的话,这将如何适应elm html 我根据一个著名的elm示例改编了以下代码:Elm检查是否按了ctrl键单击,elm,Elm,使用elm html,如何检查单击时是否按下了ctrl键 “control key down”(控制键关闭)是否是我需要在其他地方保持的状态,可能是使用键盘模块?如果是这样的话,这将如何适应elm html 我根据一个著名的elm示例改编了以下代码: import Keyboard import Html exposing (..) import Html.Attributes exposing (style) import Html.Events exposing (onClick) impo
import Keyboard
import Html exposing (..)
import Html.Attributes exposing (style)
import Html.Events exposing (onClick)
import Signal exposing(Signal, Mailbox)
type alias Model =
{ count: Int
, ctrl : Bool
}
initialModel : Model
initialModel = { count = 0, ctrl = False}
type Action = Increment | Decrement | NoOp
update : Action -> Model -> Model
update action model =
case action of
Increment ->
{ model | count = model.count + 1 }
Decrement ->
{ model | count = model.count - 1 }
NoOp ->
model
view : Signal.Address Action -> Model -> Html
view address model =
div []
[ button [ onClick address Decrement ] [ text "-" ]
, div [] [ text (toString model) ]
, button [ onClick address Increment ] [ text "+" ]
]
actions : Mailbox Action
actions =
Signal.mailbox NoOp
model : Signal Model
model =
Signal.foldp update initialModel actions.signal -- Keyboard.ctrl ?
main =
Signal.map (view actions.address) model
如何更新模型“ctrl”字段的值?您首先需要一个能够设置是否按下ctrl的操作:
type Action=Increment | decreation | SetCtrl Bool | NoOp
update函数中的case语句需要处理该新操作:
SetCtrl-bool->{model | ctrl=bool}
现在,您需要一个端口,该端口可以将键盘.ctrl
布尔值映射到一个任务,该任务通过新操作发送信号:
port-ctrlToAction:Signal(Task.Task-Effects.Never())
端口ctrlToAction=
我记得,在elm-0.16中删除了Signal.map(Signal.send actions.address信号