如何在一个大的单页面应用程序中处理elm mdl索引?

umu*_*ros 5 elm

这是elm-mdl的一个例子

Button.render Mdl [0] model.mdl
  [ Button.raised
  , Button.ripple
  , Button.onClick PollMsg
  ]
  [ text "Fetch new"]
Run Code Online (Sandbox Code Playgroud)

这里的索引是[0].我假设如果我正在构建单页面应用程序,我可以放置像["page0",0]这样的索引.是对的吗?

但这是否意味着应用程序中所有按钮的所有mdl数据都在内存中?它是如何工作的?

Fra*_*ank 5

elm-mdl使用这些标识符进行内部处理.特别是,这些ID是你可以逃脱这样的简单调用的原因updateview.

正如@pierrebeitz已经解释的那样,这些整数驻留在应用程序内存中,但这不是问题(即使你有数百个按钮).

至于在更大的环境中使用elm-mdl,您至少有以下两个选项:

  1. 使用类似的数字组合等[0, 0], [0, 1].如果在循环中生成多个类似的elm-mdl组件(f.ex.单选按钮等),这将特别有用.在您的代码中,第一个索引可能是硬编码的,但第二个整数源于循环.

  2. 对于整体情况,您需要记住,这些整数是您的实际elm-mdl Model实例的本地.换句话说,创建单独的模型允许您重用这些整数.这意味着您可以使用TEA组件,其中组件具有自己的模型,包括elm-mdl模型.由于每个组件都可以自由控制它使用的标识符,因此您可以更轻松地将它们搞砸.

话虽如此,我认为这些指数是elm-mdl最糟糕的部分.我真的很感激,如果他们可以摆脱它们(当然没有过度复杂的结果代码),但暂时我认为它们是一个非常棒的材料设计库的价格标签.