【发布时间】:2017-01-16 15:08:16
【问题描述】:
有没有办法在 Elm 中定义一个不带参数的订阅端口?
类似:
port updateTime : () -> Sub msg
使用此代码,我收到“端口 'updateTime' 的类型无效”的错误
附上代码:
port updateTime : (String -> msg) -> Sub msg
它正在工作,但我不需要从 javascript 函数向 Elm 发送任何内容。
【问题讨论】:
有没有办法在 Elm 中定义一个不带参数的订阅端口?
类似:
port updateTime : () -> Sub msg
使用此代码,我收到“端口 'updateTime' 的类型无效”的错误
附上代码:
port updateTime : (String -> msg) -> Sub msg
它正在工作,但我不需要从 javascript 函数向 Elm 发送任何内容。
【问题讨论】:
您可以获得的最接近的可能是这样的:创建类似于您的示例的端口,但第一个参数为(() -> 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);
Elm 0.19 更新
在 Elm 0.19 中,您必须明确哪些 Elm 模块暴露了端口,因此您可能需要更新模块定义以包含 port module。
port module Main exposing (main)
【讨论】:
port module