Elm中的资源和嵌套资源出错

Elm中的资源和嵌套资源出错,elm,Elm,我正在构建我的第一个Elm SPA,我正在不同的文件夹和模块中组织我的组件。在我改变主模型之前,一切正常: type alias Model = { contacts : Contacts.Model.Model , contact : Contact.Model.Model , route : Routing.Route } 为此: type alias Model = { contacts : Contacts.Model.Model , contact : Maybe Contact.M

我正在构建我的第一个Elm SPA,我正在不同的文件夹和模块中组织我的组件。在我改变主模型之前,一切正常:

type alias Model =
{ contacts : Contacts.Model.Model
, contact : Contact.Model.Model
, route : Routing.Route
}
为此:

type alias Model =
{ contacts : Contacts.Model.Model
, contact : Maybe Contact.Model.Model
, route : Routing.Route
}
我已经对代码库进行了所有必要的更改,以使其正常工作,但是我缺少了一些我找不到的内容,因为在主
更新
模块中,我经常遇到以下编译错误:

The type annotation for `update` does not match its definition. - The type annotation is saying:

    Msg
    -> { ..., contact : Maybe Contact.Model.Model }
    -> ( { contact : Maybe Contact.Model.Model
    , contacts : Contacts.Model.Model
    , route : Routing.Route
    }
    , Cmd Msg
    )

But I am inferring that the definition has this type:

    Msg
    -> { ...
    , contact :
          { birth_date : String
          , email : String
          , first_name : String
          , gender : Int
          , headline : String
          , id : Int
          , last_name : String
          , location : String
          , phone_number : String
          , picture : String
          }
    }
    -> ( { contact : Maybe Contact.Model.Model
    , contacts : Contacts.Model.Model
    , route : Routing.Route
    }
    , Cmd Msg
    )
看起来我没能把
可能的模型
传递到某个地方,但我找不到它。更新函数的外观如下所示:

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
case msg of
    ContactsMsg subMsg ->
        let
            ( updatedContacts, cmd ) =
                Contacts.Update.update subMsg model.contacts
        in
            ( { model | contacts = updatedContacts, contact = Nothing }, Cmd.map ContactsMsg cmd )

    ContactMsg subMsg ->
        let
            ( updatedContact, cmd ) =
                Contact.Update.update subMsg model.contact
        in
            ( { model | contact = updatedContact }, Cmd.map ContactMsg cmd )
这是完整的回购协议,错误如下:


我做错了什么?提前非常感谢

该问题是由
Update.Update
功能中的类型不匹配引起的

update:Msg->Model->(Model,Cmd-Msg)
您必须处理
Update.elm中的Maybe值:

update:Msg->Model->(Model,Cmd-Msg)
更新msg模型=
味精案例
联系人msg subMsg->
让
(updatedContacts,cmd)=
Contacts.Update.Update子消息model.Contacts
在里面
({model | contacts=updated contacts,contact=Nothing}
,Cmd.map ContactsMsg Cmd
)
ContactMsg subMsg->
案例模型
只需联系->
让
(更新联系人,cmd)=
Contact.Update.Update subMsg Contact
在里面
({model | contact=updated contact}
,Cmd.map ContactMsg Cmd
)
没有->
(型号,Cmd.none)

该问题是由
Update.Update
功能中的类型不匹配引起的

update:Msg->Model->(Model,Cmd-Msg)
您必须处理
Update.elm中的Maybe值:

update:Msg->Model->(Model,Cmd-Msg)
更新msg模型=
味精案例
联系人msg subMsg->
让
(updatedContacts,cmd)=
Contacts.Update.Update子消息model.Contacts
在里面
({model | contacts=updated contacts,contact=Nothing}
,Cmd.map ContactsMsg Cmd
)
ContactMsg subMsg->
案例模型
只需联系->
让
(更新联系人,cmd)=
Contact.Update.Update subMsg Contact
在里面
({model | contact=updated contact}
,Cmd.map ContactMsg Cmd
)
没有->
(型号,Cmd.none)

Hi@halfzebra,这确实有效,非常感谢!我现在遇到的问题是,它与
Contact.Update.Update
功能的映射不正确,因为当单击联系人的gravatar时,它会访问取消显示路线,运行命令以在后端获取联系人数据,但它不会在de
FetchContactSucceed
内输入设置型号并在屏幕上显示:(@bigardone如果你是Elm的新手,我建议你去看看,从一开始你已经拥有的那一个可能会让grok有点不知所措。嗨@halfzebra,这确实有效,非常感谢!我现在的问题是它没有正确映射到
Contact.Update.Update
函数,因为当点击contac时t's gravatar它访问de show route,运行命令在后端获取联系人数据,但它不会进入de
FetchContactSucceed
内部设置模型并在屏幕上显示:(@bigardone如果您是Elm的新手,我建议您签出,从一开始,您拥有的联系人可能有点难以接受。