这是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数据都在内存中?它是如何工作的?
elm-mdl使用这些标识符进行内部处理.特别是,这些ID是你可以逃脱这样的简单调用的原因update和view.
正如@pierrebeitz已经解释的那样,这些整数驻留在应用程序内存中,但这不是问题(即使你有数百个按钮).
至于在更大的环境中使用elm-mdl,您至少有以下两个选项:
使用类似的数字组合等[0, 0], [0, 1].如果在循环中生成多个类似的elm-mdl组件(f.ex.单选按钮等),这将特别有用.在您的代码中,第一个索引可能是硬编码的,但第二个整数源于循环.
对于整体情况,您需要记住,这些整数是您的实际elm-mdl Model实例的本地.换句话说,创建单独的模型允许您重用这些整数.这意味着您可以使用TEA组件,其中组件具有自己的模型,包括elm-mdl模型.由于每个组件都可以自由控制它使用的标识符,因此您可以更轻松地将它们搞砸.
话虽如此,我认为这些指数是elm-mdl最糟糕的部分.我真的很感激,如果他们可以摆脱它们(当然没有过度复杂的结果代码),但暂时我认为它们是一个非常棒的材料设计库的价格标签.