数据字段的案例类中的参数数量是动态变化的。
那么,Var
也可以绑定 Binding.scala 中的js.Array
吗?
我尝试了以下代码但没有成功:
case class Data(d: Var[js.Array[String]])
val data = Vars.empty[Data]
{
for (x <- data) yield {
val y: js.Array[String] = x.d.bind
y.zipWithIndex.foreach{case (v, i) => <th>{ y(i) }</th>}
}
}
我可以把它带到ScalaFiddle上。
本质上,您必须将每个数组或选项放在 Constants 对象中,例如:
@dom
def render = {
val bindData= data.bind
<div>
{Constants(bindData: _*)
.map(a => dataElem(a))
.map(_.bind)}
</div>
}
它应该具有:
- 绑定数据:
val bindData= data.bind
- 放置元素:
<div>
放置 - 常量构造函数中的数组:
Constants(bindData: _*)
- 使用每个数据元素调用元素:
.map(a => dataElem(a))
- 绑定每个结果:
.map(_.bind)
所以你逐级下降。
来自 Binding.scala:避免太多 dom-tree 更新的策略,并且不得不提到,与理解相比,直接在 Vars 上绑定很慢。
你应该总是使用来理解Vars
,除非你正在做一些必须在整个列表上工作的聚合。
对于您的示例,我创建了一个更新的 ScalaFiddle:https://scalafiddle.io/sf/7lCiigL/0