我正在努力弄清楚如何将数据加载到动态生成的视图中。
因此,如何在我的视图上触发 update 功能,以便可以使用Web请求的数据进行初始化。
以下是视图的呈现方式:
case portal.requested of
Domain.ViewSources ->
div []
[ Html.map SourcesUpdated <|
Sources.view
{ profileId = portal.provider.profile.id
, platforms = model.platforms
, source = portal.newSource
, sources = loggedIn.profile.sources
, isInitialized = False
}
]
详细信息:
我尝试将以下内容添加到我的主页面,该主页面调用了 view 功能:
main =
Html.program
{ init = ( init, Cmd.none )
, view = view
, update = update
, subscriptions = (\_ -> Sub.none)
}
过去,模块的更新功能会在键输入和按钮点击事件时触发。但是,现在我需要从过去的用户会话中加载数据。因此,当用户首次查看页面时,我很难触发 update 功能。
这就是我想做的事情:
update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
if not model.isInitialized then
( model, runtime.sources model.source.profileId SourcesResponse )
else ...
这是code。
答案 0 :(得分:1)
你应该利用init函数采用包含初始Command的元组的面,其结果传递给更新函数
main =
Html.program
{ init = ( init, runtime.sources init.source.profileId SourcesResponse )
, view = view
, update = update
, subscriptions = (\_ -> Sub.none)
}
答案 1 :(得分:0)
我了解到我可以简单地将状态传递给我的视图功能。
div []
[ Html.map SourcesUpdated <|
Sources.view
{ ...
, sources = loggedIn.profile.sources
}
]
因此,我陷入了使用OOP执行app UX的 PageLoaded 范例。
因此,在上面的示例中,我使客户端模块负责初始化其他模块的视图需要呈现的数据。