2017-10-08 12 views
2

私は階層をいくつかのドロップダウンで表しました。Elm - ドロップダウン "選択された"属性がelmで動作しない

親のドロップダウン選択は、アイテムが選択されたときに子のドロップダウンのオプションを駆動します。

親が選択された場合、空白( "")の最初の要素を追加し、 "--select--"になるテキストを表示する子のドロップダウンに入力します。

親が変更されるたびに、子ドロップダウンでこの項目をデフォルトで選択します。

問題は、「選択された」属性がその仕事をしていないように見えることです。その後、

Ellie editor example

セレクト親 "エントリ1" と子を選択し、 "1.2":

childOptions : String -> Html msg 
childOptions val = 
    -- This selected attribute does not seem to work 
    Html.option [ (Html.Attributes.selected (val == "")), Html.Attributes.value val ] [ Html.text val ] 

あなたがここで動作を確認することができます。

親「エントリ2」を選択し、それが「選択された」属性を無視していることに気づきます。これは、子エントリが空白( "")の場合にのみ当てはまります。 現在デフォルトで選択されている項目は「2.2」です。これは、以前に選択した要素の位置を「1.2」に保持していることを示しています。

誰がこれを修正できるのかに関するご意見はありますか?

答えて

0

この問題は、getOptions機能にあるように見えます。その引数が変更されないので、その出力(<option>単位)も変更されません。出力が変化しないので、Elmは<option>要素のselectedプロパティを変更しません。

(その<select>にはMsgイベントがありませんので、エルムは変更イベントと、新しい値が表示されません。)

getOptions : String -> Html msg 
getOptions val = 
    Html.option 
     [ Html.Attributes.selected (val == "") 
     , Html.Attributes.value val 
     ] 
     [ Html.text val ] 

Hierarchy項目は、それはselected値だ追跡し、getOptionsにそれを渡す必要があります。このようなもの:

getOptions : String -> String -> Html msg 
getOptions selectedValue val = 
    Html.option 
     [ Html.Attributes.selected (val == selectedValue) 
     , Html.Attributes.value val 
     ] 
     [ Html.text val ] 
+0

私はそのような場合は分かりません。 Ellieのプログラムの更新版を見る(上の質問のリンクを更新した)。私は今メッセージを送信しており、親と子の両方のDropdownsの変数に選択された値を表示しています。 getOptionsのロジックは単純です...値が空白の場合は、それを選択します。 –

+0

@ marcio-jエルムがその論理を実施するとどうなるでしょうか?ユーザーが2番目の 'select'でオプションを選択した瞬間、Elmは値が空ではないので** un **を選択します。 –

関連する問題