2016-10-17 11 views
5

मेरे पास एक फ़ील्ड के साथ एक साधारण रूप है। मैं फॉर्म जमा करने पर फ़ील्ड को साफ़ करना चाहता हूं। मैं अपने मॉडल को अपने अपडेट फ़ंक्शन में साफ़ कर रहा हूं, लेकिन टेक्स्ट इनपुट में टेक्स्ट बना हुआ है।एल्म: सबमिट पर स्पष्ट फॉर्म

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!" ] 
      ] 
     ] 

textmodel.currentSpelling प्रदर्शित बाहर साफ करता है जब मैं अद्यतन समारोह के साथ इसे खाली है, लेकिन टेक्स्ट इनपुट बॉक्स आबादी बनी हुई है। कोई विचार यह कैसे साफ़ करें?

fetchWord एक HTTP कॉल करता है, लेकिन यह यहां छोड़ा गया है।

उत्तर

10

value model.currentSpelling इनपुट तत्व के गुणों में जोड़ें। इस तरह आप एचटीएमएल में इनपुट तत्व के अंदर स्ट्रिंग को नियंत्रित कर सकते हैं।

+1

शानदार! 'Html.Attributes.value' बस मुझे जरूरी है! – Charlie

+2

ध्यान रखें कि 'Html.Attributes.value' एक बग से पीड़ित है, जो फ़ील्ड में अंतिम वर्ण के बाद कर्सर को स्थानांतरित नहीं करते समय त्वरित रूप से टाइप करते समय "कूदने वाला कर्सर" होता है। यहां कार्रवाई में बग देखें: https://runelm.io/c/wdr और यहां समस्या के बारे में एक थ्रेड: https://github.com/elm-lang/html/issues/105 – A5308Y

+0

यह मुझे एक ले गया यह पता लगाने के लिए कि जब भी वर्तमान स्पेलिंग का मान अपडेट किया जाएगा तो दृश्य "ताज़ा" होता है। इसका अर्थ यह है कि वर्तमान स्पेलिंग मान के लिए "बाध्य" नहीं है, इसके बजाय प्रदर्शित होने वाला मान लगातार अपडेट हो रहा है क्योंकि दृश्य अपडेट हो रहा है। –

संबंधित मुद्दे