2017-02-22 7 views
0

私は現在、範囲に使用する関数と、各データ(特性)の数値入力型を持っています。モデルの更新はEditTrait Mhid Relevanceメッセージで行われます。 ELM-MDLを通じて、Googleの材料設計にもたらすための試みにおいて入力範囲をelm-mdl Sliderに移行するには?

valueRange : String -> TraitWithRelevance -> Html Msg 
valueRange typ trait = 
    let 
     (name, mhid, relevance) = 
      trait 
    in 
     input [ Attr.type_ typ, Attr.min "0", Attr.max "100", Attr.value relevance, Attr.step "1", onInput <| EditTrait mhid ] [] 

、私はELM-MDLからSliderコンポーネントを利用valueSlider機能をvalueRange "range"呼び出しを交換したいです。重要なのonChangeハンドラが欠落しているため

rendered slider

以下のコードは、コンパイルが、明らかに動作しません。しかし、それは正確にレンダリングされ、スライダは、入力数字要素を通して特性の関連性値を更新するときに変更されます。私は通常の入力で動作しますSlider.onChange (EditTrait mhid)、投げるとき

valueSlider trait = 
    let 
     (name, mhid, relevance) = 
      trait 

     relAsFloat = 
      String.toFloat relevance |> Result.toMaybe |> Maybe.withDefault 0 
    in 
     Slider.view 
      [ Slider.value relAsFloat 
      , Slider.min 0 
      , Slider.max 100 
      , Slider.step 1 
      ] 

、コンパイラは私に、このエラーが発生します。

関数onChangeの引数が不一致の原因です。

438 | Slider.onChange(EditTrait mhid) ^^^^^^^^^^^^^^機能onChangeがあることを、引数を期待している:

Float -> m 

しかし、それは次のとおりです。

Relevance -> Msg 

を検出します1モジュール内のエラー。 onInputタイプとして

+0

あなたは 'Relevance'と' EditTrait'の定義を提供できますか? –

答えて

1

は、私はRelevanceStringであると仮定し(String -> msg) -> Html.Attribute msgあり、そしてEditTraitmhid -> String -> Msgです。この場合

Slider.onChangeFloat -> MsgないRelevance -> Msgを期待しているため、Slider.onChange (EditTrait mhid)は動作しません(コンパイラのメッセージを読み取りますよう。)

この問題を解決するには、あなたの代わりにStringFloatを受信するEditTraitを変更する必要があります。 RelevanceのタイプをFloatに変更し、それに応じてコードを更新することはすべきことです。

関連する問題