榆树 - 联合类型和模型

时间:2016-04-26 18:34:22

标签: view model action elm

this指南中的以下代码使用联合类型来保存所有可能的窗口小部件类型,然后呈现视图:

type Widget
    = ScatterPlot (List (Int, Int))
    | LogData (List String)
    | TimePlot (List (Time, Int))

view : Widget -> Element
view widget =
    case widget of
      ScatterPlot points ->
          viewScatterPlot points

      LogData logs ->
          flow down (map viewLog logs)

      TimePlot occurrences ->
          viewTimePlot occurrences 

我相当基本的问题是:

关于Widget类型,这里的基础模型是什么?

给定一个动作(例如,用户想要查看散点图小部件),应该更新的底层结构是什么?

1 个答案:

答案 0 :(得分:2)

Widget是您的原始数据。然后,您需要单独建模要显示的数据

Template.example.events({
    'click #generatePdf': function(event) {
        HTTP.call( 'GET', 'http://localhost:3000/generate/getPdf', {}, function( error, response ) {
            if (error) {
                console.warn(error);
            }
        });
    }
});

然后假设您有一些传入的IO数据

type alias Model = Widget

然后将数据加载到正确类型的Widget中,您的查看功能将从原始问题知道如何处理数据