Elm中的资源和嵌套资源出错
我正在构建我的第一个Elm SPA,我正在不同的文件夹和模块中组织我的组件。在我改变主模型之前,一切正常: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
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时,它会访问取消显示路线,运行命令以在后端获取联系人数据,但它不会在deFetchContactSucceed
内输入设置型号并在屏幕上显示:(@bigardone如果你是Elm的新手,我建议你去看看,从一开始你已经拥有的那一个可能会让grok有点不知所措。嗨@halfzebra,这确实有效,非常感谢!我现在的问题是它没有正确映射到Contact.Update.Update
函数,因为当点击contac时t's gravatar它访问de show route,运行命令在后端获取联系人数据,但它不会进入deFetchContactSucceed
内部设置模型并在屏幕上显示:(@bigardone如果您是Elm的新手,我建议您签出,从一开始,您拥有的联系人可能有点难以接受。