【问题标题】:Nesting ui components and accessing global data in Elm在 Elm 中嵌套 ui 组件并访问全局数据
【发布时间】:2016-01-18 10:20:18
【问题描述】:

我有一个使用 Elm 架构设计的 elm 应用程序。我已经将它用于教程中的所有示例,并且它们工作正常。我有以下组件

  • 容器列表视图
  • 容器视图
  • 地址视图
  • 注册视图
  • ...

ContainerView 组件是一个非常格式化的 div 结构,用于包含其他视图(但目前,一次只有 1 个)

ContainerListView 可以包含多个容器视图。它处理他们的展示和定位。你可以把它想象成一个MDI表面

主用户界面中的菜单用于将新的容器视图添加到容器视图列表中。

我收到了三个主要问题。其中两个是

  • 如何创建组件以使 Container 视图可以包含任何其他元素,例如我传入的 init、update 和 view 函数并期望所有东西都正确连接?目前,我拥有的示例视图有点硬编码。他们确切地知道孩子们是谁。

  • 1234563并且可能只能从 main 更新?

我不确定这两个是否应该是单独的问题。任何有关如何在 hello world 之外构建大型应用程序的信息也将不胜感激。

【问题讨论】:

    标签: elm


    【解决方案1】:

    我正在做类似的事情!嵌套控件。我也有一个容器对象,它知道它可以处理的所有类型,并且基本上有 case 语句来处理每种类型。所以我不能放入一个新的控件类型并期望它来处理它,这需要改变容器。

    据我所知,elm 没有类型类,这就是我尝试在 haskell 或 purescript 中处理这种抽象的方式。这里还有更多内容:

    https://github.com/elm-lang/elm-compiler/issues/38

    这里:

    https://github.com/elm-lang/elm-compiler/issues/1039

    结果似乎是他们还不知道他们想如何解决这个问题,所以他们不知道。

    【讨论】:

    • 看来我们只能拭目以待了。我将研究容器对象的想法。
    • FWIW 我的东西在这里(查看 SvgControl.elm):github.com/bburdette/oscpad/tree/master/elm
    • 刚刚看了下oscpad代码。结构似乎就像我正在寻找的一样。您如何解决嵌套组件的问题 - 例如可以包含 Button 或 Slider 的 SvgContainer?这似乎就是我所面临的。
    • 当你创建一个 SvgControl 时,你将一个“Spec”结构作为参数传递给它的 Init 函数。该规范说明要制作什么样的东西 - 滑块,按钮等。在 oscpad 中有一个初始规范,它只是一个巨大的按钮。一旦 elm 使用 websockets 连接到服务器,它就会收到一个 json 文件,该文件会被解析以制作更复杂的规范。
    • 谢谢@Bzzt。我现在可以工作了。不过不得不写很多代码。
    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 2023-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-22
    • 2013-06-11
    相关资源
    最近更新 更多