2016-10-17 28 views
5

Bir alanıyla basit bir form var gönderin. Formu teslim alanından temizlemek istiyorum. Güncelleme işlevimde modelimi temizliyorum, ancak metin metin girişinde kalır. Ben güncelleme fonksiyonu ile boşaltın zaman model.currentSpelling görüntülendiğiElm: net formu

type alias Model = 
    { currentSpelling : String } 

type Msg 
    = MorePlease 

update : Msg -> Model -> (Model, Cmd Msg) 
update msg model = 
    case msg of 
     MorePlease -> 
      ( log "cleared spelling: " { model | currentSpelling = "" } 
       , fetchWord model.currentSpelling) 

view : Model -> Html Msg 
view model = 
    div [] 
     [ Html.form [ onSubmit MorePlease ] 
      [ input [ type' "text" 
        , placeholder "Search for your word here" 
        , onInput NewSpelling 
        , attribute "autofocus" "" 
        ] [] 
      , text model.currentSpelling 
      , input [ type' "submit" ] [ text "submit!" ] 
      ] 
     ] 

text temizler, ancak metin giriş kutusu nüfuslu kalır. Herhangi bir fikir nasıl temizlenir?

fetchWord bir HTTP çağrısı yapar, ancak burada kullanılamaması.

cevap

10

giriş elemanı vasıfları içine value model.currentSpelling ekleyin. Yani html girdi elemanının dize içini kontrol edebilirsiniz nasıl.

+1

fantastik! Html.Attributes.value 'sadece ihtiyacım olan şey! 'Html.Attributes.value' imleç alanında son karakterden sonra konumlandırılmış değilken hızla yazarken bir "atlama imleç" yol açtığı, bir hata muzdarip olduğunu unutmayın – Charlie

+2

. Buradaki eylemi şu adreste görebilirsiniz: https://runelm.io/c/wdr ve konuyla ilgili bir konu: https://github.com/elm-lang/html/issues/105 – A5308Y

+0

Beni aldı currentSpelling değeri her güncellendiğinde görünümün "yenilenmiş" olduğunu anlamaya çalışırken. Bu, currentSpelling değerine "bağlı" değil, görüntülenen güncelleştirme nedeniyle görüntülenen değerin sürekli güncellenmesi anlamına gelir. –