elm:定义没有参数的订阅端口

时间:2017-01-16 15:08:17

标签: elm elm-port

有没有办法在Elm中定义没有参数的订阅端口?

类似的东西:

port updateTime : () -> Sub msg

使用此代码,我收到“Port'updateTime'具有无效类型”

的错误

使用代码:

port updateTime : (String -> msg) -> Sub msg

它正在运行,但我不需要从javascript函数向Elm发送任何内容。

1 个答案:

答案 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);