在 Elm 中使用 model 和 update 的标准方法是定义 Model 和 Msg 类型,以及 update 函数:
type alias Model = { ... }
type Msg = Msg1 | Msg2 | ...
update : Msg -> Model -> (Model, Cmd Msg)
...
当应用程序增长时,所有这些类型和功能都会变得更加复杂。我想通过以下方式将它们分开:
type alias Model1 = { ... }
type alias Model2 = { ... }
type alias Model = { model1 : Model1, model2 : Model2 }
type Msg1 = Msg1a | Msg1b | ...
type Msg2 = Msg2a | Msg2b | ...
type Msg = M1 Msg1 | M2 Msg2 | ...
然后,我想分别处理所有这些(我知道该怎么做)。
不过,我的视图功能有问题。我将我的观点定义如下:
view : Model -> Html Msg
view model =
let v1 = view1 model.model1
...
in ...
view1 : Model1 -> Html Msg1
view1 model = ...
问题是,view1 的结果是Html Msg1
,而视图函数需要Html Msg
。
有没有办法将结果从 转换Html Msg1
为Html Msg
?