I think what you're looking for is this syntax:
( { model | email = { emailModel | value = email, errors = validateEmail
email } }, Cmd.none )
and
( { model | password = { passwordModel | value = password, errors =
validatePassword password } }, Cmd.none )
On Sat, Feb 25, 2017 at 2:08 PM, Michael Johnson <
[email protected]> wrote:
> Hello, new to elm and experimenting around with it and I'm not sure how to
> update a sub model. I have not run across an example of this form yet.
> Given the following:
>
> -- MODEL
>
>
> type alias StringField =
> {
> value : String
> , errors : List String
> }
>
>
> ------> how to update value and errors fields for email and password in
> this model
> type alias Model =
> { email : StringField
> , password : StringField
> }
>
>
> initValue : String
> initValue = ""
>
>
> initErrors : List String
> initErrors = []
>
>
> initEmail = StringField initValue initErrors
> initPassword = StringField initValue initErrors
>
>
> init : (Model, Cmd Msg)
> init =
> (Model initEmail initPassword, Cmd.none)
>
>
> -- UPDATE
>
>
> type Msg
> = InputEmail String
> | InputPassword String
> | SubmitForm
>
> update : Msg -> Model -> (Model, Cmd Msg)
> update msg model =
> case msg of
> InputEmail email ->
> let
> emailModel = model.email
> in
>
> ---->>
> { emailModel | value = email, errors = validateEmail email }
> ( { model | email = emailModel }, Cmd.none)
>
>
> InputPassword password ->
> let
> passwordModel = model.password
> in
>
> ---->>
> { passwordModel | value = password, errors = validatePassword
> password }
> ( { model | password = passwordModel }, Cmd.none )
>
>
> SubmitForm ->
> ( model, Cmd.none)
>
> validateEmail : String -> List String
> validateEmail model =
> --put validation here
> []
>
>
> validatePassword : String -> List String
> validatePassword model =
> --put validation here
> []
>
> I have worked through several iterations and got to this point but it
> seems like there should be an easier and more direct way. Plus this is
> still producing the following errors:
>
> -- TYPE MISMATCH -----------------------------------------------
> kitchensink.elm
>
>
> You are giving an argument to something that is not a function!
>
>
> 63| { passwordModel | value = password, errors = validatePassword
> password }
>
> 64|> ( { model | password = passwordModel }, Cmd.none )
>
>
> Maybe you forgot some parentheses? Or a comma?
>
>
> -- TYPE MISMATCH -----------------------------------------------
> kitchensink.elm
>
>
> You are giving an argument to something that is not a function!
>
>
> 56| { emailModel | value = email, errors = validateEmail email }
>
> 57|> ( { model | email = emailModel }, Cmd.none)
>
>
> Maybe you forgot some parentheses? Or a comma?
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Elm Discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> For more options, visit https://groups.google.com/d/optout.
>
--
You received this message because you are subscribed to the Google Groups "Elm
Discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.