2017-01-16 1 views
3

Elmにパラメータなしでサブスクリプションポートを定義する方法はありますか?elm:パラメータなしでサブスクリプションポートを定義する

ような何か:

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

:このコードで

port updateTime :() -> Sub msg 

、私はコードで

"ポート 'updateTime' は無効な型を持っている" というエラーを取得していますそれは動作しているが、私はElmにjavascript関数から何も送る必要はない。あなたは何のパラメータを受け入れないUpdateTimeMsgを持っていると仮定すると

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

、:あなたの例のようにポートを作成しますが、(() -> msg)として最初のパラメータを持つ:

答えて

7

あなたが得ることができる最も近いが、おそらくこのようなものです:あなたは、このようなupdateTimeサブスクリプションに結び付けることができます

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

JavaScript側では、唯一のパラメータとしてnullを渡す必要があります。

app.ports.updateTime.send(null); 
+0

これは機能します。しかし、なぜ公式サイトにこれに関する文書がないのだろうか?私はhttps://guide.elm-lang.org/interop/javascript.html#portsを見ていましたが、私は自分の仕事を達成する方法について何かを見つけることができませんでした。 ELMと不完全なドキュメンテーションについての本はありません... –

+0

ええ、これは文書化されていないことを吸う - 私はそれがどのように呼び出されたかを知るためにNativeを読まなければなりませんでした。確信が持てない場合は、ランタイムの邪魔になることがあります。注:エルムはELMではありません。 – toastal