0

我的案例类中数据字段的参数数量动态变化。

那么,a 也可以在 Binding.scala 中Var绑定 a吗?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>}
  }
}
4

2 回答 2

2

我可以把它带到ScalaFiddle上工作。

本质上,您必须将每个数组或选项放在一个常量对象中,例如:

  @dom
  def render = {
      val bindData= data.bind
      <div>
        {Constants(bindData: _*)
           .map(a => dataElem(a))
           .map(_.bind)}
      </div>
    }

它应该有:

  1. 绑定数据:val bindData= data.bind
  2. 放置元素:<div>放置
  3. 常量构造函数中的数组:Constants(bindData: _*)
  4. 使用每个数据元素调用元素:.map(a => dataElem(a))
  5. 绑定每个结果:.map(_.bind)

所以你一层一层往下走。

于 2018-03-20T20:31:08.637 回答
1

来自Binding.scala:避免过多 dom-tree 更新的策略,不得不提一下,与理解相比,直接绑定在 Vars 上的速度很慢。

你应该总是使用 for comprehension on Vars,除非你正在做一些必须在整个列表上工作的聚合。

对于您的示例,我创建了一个更新的 ScalaFiddle:https ://scalafiddle.io/sf/7lCiigL/0

于 2018-05-16T08:29:19.460 回答