elm: определить порт подписки без параметров

Есть ли способ определить порт подписки без параметров в Elm?

Что-то вроде:

port updateTime : () -> Sub msg

С этим кодом я получаю сообщение об ошибке "Порт 'updateTime' имеет недопустимый тип"

С кодом:

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

Это работает, но мне не нужно ничего отправлять из функции javascript в Elm.

1 ответ

Решение

Самое близкое, что вы можете получить, это, вероятно, что-то вроде этого: Создайте порт, похожий на ваши примеры, но с первыми параметрами как (() -> msg):

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

Если у вас есть UpdateTimeMsg это не принимает никаких параметров,

type Msg
    = ...
    | UpdateTime

Затем вы можете связать в updateTime подписка такая:

subscriptions : Model -> Sub Msg
subscriptions model =
    updateTime (always UpdateTime)

Теперь, на стороне JavaScript, вам придется пройти null как единственный параметр.

app.ports.updateTime.send(null);
Другие вопросы по тегам