有没有办法在Elm中定义没有参数的订阅端口?
类似的东西:
port updateTime : () -> Sub msg
使用此代码,我收到“Port'updateTime'具有无效类型”
的错误使用代码:
port updateTime : (String -> msg) -> Sub msg
它正在运行,但我不需要从javascript函数向Elm发送任何内容。
答案 0 :(得分:10)
你能得到的最接近的可能是这样的:创建类似于你的例子的端口,但第一个参数为(() -> msg)
:
port updateTime : (() -> msg) -> Sub msg
假设您有UpdateTime
Msg
不接受任何参数,
type Msg
= ...
| UpdateTime
然后,您可以绑定updateTime
订阅,如下所示:
subscriptions : Model -> Sub Msg
subscriptions model =
updateTime (always UpdateTime)
现在,在javascript方面,您必须将null
作为唯一参数传递。
app.ports.updateTime.send(null);