具有依赖模型的榆树模块的结构结构

时间:2017-01-10 22:08:49

标签: architecture elm

我正在深入挖掘榆树,偶然发现以下问题:

  • 我有两个模块,模块Jedi和模块Droids。
  • Jedi能够储存Jedi,Droids商店Droids。
  • 我通过elm架构方法将两个模块集成到主模块中。

现在有人告诉我每个机器人都是由绝地武士拥有的(不知道那是不是真的)。所以我想在机器人模块中添加一个选择框 - 所以我可以将Droid分配给Jedi。 绝地武士可以从Jedis模型中获取。

我的第一个问题是:哦,很好,我只是导入机器人模块中的主模块并尝试提取我的jedis。 但这不起作用,因为模块依赖性的循环性。

接下来我想:我在机器人模型中导入jedi模型并使用它来增强我的机器人模型 - 所以我可以将我的jedis放入“droid-owners”的选择框中。但这也不起作用。当我更新jedis列表时,我的机器人模块中没有任何效果(这是逻辑,因为jedis生成的消息向上弹出到main。主要识别它们并更新主模块。但机器人模型永远不会识别更新jedis模块)。

所以我想我必须了解一些关于elm架构的基础知识。我想我打破了整个榆树建筑。

任何人都可以解释如何正确实现这一点 - 我认为在开始开发更大的应用程序之前,这是一个需要理解的基本问题。

这是截图。您可以在每个组件下面看到那些模型作为字符串

Screenshot

会欣赏一些评论或提示或在哪里阅读更多关于......谢谢: - )

更新

我在要点中包含了所有三个文件: https://gist.github.com/marschro/7584216d5bdfed077b26a9d32c5b5cf6

1 个答案:

答案 0 :(得分:0)

将model.jedis传递给Main.view中的Droids.view。您必须修改Droids.view以接受List Jedi的其他参数。关于核心Elm功能的文档可能会令人困惑。它们都有默认签名,即

view : Model -> Html Msg

但这只是最基本的签名。对于此示例,将其修改为

view : List Jedi -> Model -> Html Msg

现在您拥有最新的Jedis列表 至于模块参考,你可以做

import Jedi exposing (Jedi)

来自您的Droid模块