Elm:使用“地址字符串操作”
Elm: Use `Address String Action`
从 input 获取值的典型示例是:
view : Address String -> String -> Html
view address string =
div []
[ input
[ placeholder "Text to reverse"
, value string
, on "input" targetValue (Signal.message address)
, myStyle
]
[]
, div [ myStyle ] [ text (String.reverse string) ]
]
我明白了。但我希望我的地址是 Address String Action
类型(其中 Action 是我定义的其他类型)。据我了解,这意味着地址需要一个 String
后跟一个 Action
类型,因为它是 "arguments" (我认为 Address
是一个函数,但这可能不是正确)。
是否可以使用 Address String Action
的地址类型,然后以类似的方式将其与输入一起使用?还是我一开始就可以做 Address String Action
?
您 link 的 example 可能有点过于简单,因为 Action 和 Model 都是一个字符串。你很少 运行 进入那个。
我用当前形式的 elm 更规范的内容对示例进行了调整:
main =
StartApp.start { model = { text = "" }, view = view, update = update }
type Action
= SetText String
type alias Model =
{ text : String }
update : Action -> Model -> Model
update action model =
case action of
SetText text ->
{ model | text = text }
view : Address Action -> Model -> Html
view address model =
div []
[ input
[ placeholder "Text to reverse"
, value model.text
, on "input" targetValue (Signal.message address << SetText)
, myStyle
]
[]
, div [ myStyle ] [ text (String.reverse model.text) ]
]
请注意 Action
类型是一个联合类型,它列出了您可以与页面交互的所有不同方式。在这个例子中,你唯一能做的就是设置文本。
view
的签名现在更加明确。第一个参数是处理类型 Action
的邮箱地址,第二个参数包含模型的当前状态。
view : Address Action -> Model -> Html
没有必要尝试像 Address String Action
这样的方法,因为现在 Action
封装了文本的设置。
从 input 获取值的典型示例是:
view : Address String -> String -> Html
view address string =
div []
[ input
[ placeholder "Text to reverse"
, value string
, on "input" targetValue (Signal.message address)
, myStyle
]
[]
, div [ myStyle ] [ text (String.reverse string) ]
]
我明白了。但我希望我的地址是 Address String Action
类型(其中 Action 是我定义的其他类型)。据我了解,这意味着地址需要一个 String
后跟一个 Action
类型,因为它是 "arguments" (我认为 Address
是一个函数,但这可能不是正确)。
是否可以使用 Address String Action
的地址类型,然后以类似的方式将其与输入一起使用?还是我一开始就可以做 Address String Action
?
您 link 的 example 可能有点过于简单,因为 Action 和 Model 都是一个字符串。你很少 运行 进入那个。
我用当前形式的 elm 更规范的内容对示例进行了调整:
main =
StartApp.start { model = { text = "" }, view = view, update = update }
type Action
= SetText String
type alias Model =
{ text : String }
update : Action -> Model -> Model
update action model =
case action of
SetText text ->
{ model | text = text }
view : Address Action -> Model -> Html
view address model =
div []
[ input
[ placeholder "Text to reverse"
, value model.text
, on "input" targetValue (Signal.message address << SetText)
, myStyle
]
[]
, div [ myStyle ] [ text (String.reverse model.text) ]
]
请注意 Action
类型是一个联合类型,它列出了您可以与页面交互的所有不同方式。在这个例子中,你唯一能做的就是设置文本。
view
的签名现在更加明确。第一个参数是处理类型 Action
的邮箱地址,第二个参数包含模型的当前状态。
view : Address Action -> Model -> Html
没有必要尝试像 Address String Action
这样的方法,因为现在 Action
封装了文本的设置。