2017-02-02 5 views
1

私は通常のビュー機能を持っていますview : Model -> Html MsgElm get Html Never

これで、すべてのイベントハンドラを削除するだけのビューHtml Neverから製品を作成する必要があります。

私の最初のアイデアは、Html.mapを機能Msg -> Neverで使用することでしたが、Neverに値がないので、定義方法はわかりません。

この仕事をするための秘訣はありますか?

+4

'HtmlMsg'を' Html Never'にキャストすると、HTMLリスナーが壊れている可能性があるHTMLノードが表示されてしまいます(メモリリークや予期しない動作)。ノードファクト(イベントリスナー)をチェックし、仮想DOMノードのJavaScript表現からそれらを削除するためのネイティブ関数を書く必要があります。これはノードのすべての 'Msg'を実際に"働かせ "て削除します。 ** TL; DR:**あなたが望むものは危険なアイデアであり、エルムはそれを許さない。最終目標は何ですか?詳細を共有してください。 – halfzebra

+0

ありがとう@halfzebra。私はあなたのコメントを完全に理解していないことを認めなければなりません...とにかく、私はhttps://github.com/rupertlssmith/elm-server-side-rendererを使って、私のビューの最初にレンダリングされたバージョンを含む文字列を表示しようとしています;ライブラリは常に 'Html Never'を使います。私は 'Html Msg'を' Html Never'に変換してそこで使えるようにしたかったのです。 – marcosh

+0

サーバーサイドのレンダリング用に用意されているフロントエンドコードの一部を再利用したいとします。私が知る限り、Elmのサーバーサイドレンダリングは実験としてのみ存在します(今のところ)。サーバー側で 'Html Msg'署名を持つビューは、イベントを発生させないので少し奇妙です。 – halfzebra

答えて

0

Html Neverは、イベントハンドラのないビューになります。このビューをタイプHtml Msgにマップする場合は、Html.map neverを使用できます。関数neverは、コアに定義されています。基本。

代わりにHtml xのようなイベントハンドラなしでジェネリック型をビューに使用することをお勧めします。その後、マッピングをまったく行う必要はありません。