Mattos
Mattos

Reputation: 809

how to update an inner record in elm

I have this model

type alias Model = 
  { exampleId : Int
  , groupOfExamples : GroupExamples
  }

type alias GroupExamples = 
  { groupId : Int
  , results : List String
  }

In my update function, if I want to update the exampleId would be like this:

 { model | exampleId = updatedValue }

But what if I need to do to update, for example, just the results value inside of GroupExamples?

Upvotes: 5

Views: 577

Answers (1)

robertjlooby
robertjlooby

Reputation: 7230

The only way to do it in the language without anything extra is to destructure the outer record like:

let
    examples = model.groupOfExamples
    newExamples = { examples | results = [ "whatever" ] }
in
    { model | groupOfExamples = newExamples }

There is also the focus package which would allow you to:

set ( groupOfExamples => results ) [ "whatever" ] model

Upvotes: 12

Related Questions