如何更新模型中的字段/值?

时间:2019-07-18 21:28:30

标签: syntax record elm

如果我的模型如下:

type alias Application = { id : Int , term : Int , amount : Int }  
type alias Model = { application : Application }

并且我正在尝试更新term的值,我在update case语句中的输入上有onInput UpdateTerm,如何更新此值?

到目前为止,我拥有UpdateTerm term ->;,但是不确定如何只更新应用程序内部的term值吗?

2 个答案:

答案 0 :(得分:6)

记录字段更新在guidereference documentation中都有描述。更新嵌套在另一个记录内的记录中的字段仅是一个接一个地做的事情。假设您有一个名为model的绑定:

let
    application =
        model.application

    updatedApplication =
        { application | term = term }
in
{ model | application = updatedApplication }

答案 1 :(得分:1)

为了获得更好的可读性,您可以制作如下功能:

update msg model = 
    case msg of
       changeNestedProperty property -> 
            ({ model | record= setNestedProperty property model.record } , Cmd.none)

setNestedProperty : String -> Record-> Record
setNestedProperty property record = 
   { record | nestedProperty = property }