2

我正在使用 scalajs 和 binding.scala 进行开发。我将 IDE 用作 Intellij。但是,在 Intellij 中使用 dom 宏时,会出现以下红色标记。当我使用输入元素中id的属性值作为宏时出现这个错误解决办法是什么?

当您将输入元素的 id 属性值用作 marco 时,会出现此错误(又名“无法解析符号”)。

请参阅下面的图片链接。

这是我的代码图像。

 @dom
def render: xml.Elem = {
val name: _root_.com.thoughtworks.binding.Binding.Var[_root_.java.lang.String] = Var.apply("Binding.scala")
val show: _root_.com.thoughtworks.binding.Binding.Var[Boolean] = Var.apply(false)
<div>
  <p>
    <label for="showCheckbox">
      <input type="checkbox" id="showCheckbox" onchange={e: Event => show.value = showCheckbox.value }/>
      <span> Say hello to <input id="nameInput" value={name.value} oninput={_: Event => name.value = nameInput.value}/></span>
    </label>
  </p>
  {
  if (show.bind) {
    <p>
      Hello, {name.bind}!
    </p>
  } else {
    <!-- Don't show hello. -->
  }
  }
</div>
}
4

2 回答 2

1

我实际上有同样的问题。我有两种处理方法:

  1. 忽略这些异常——因为它们只是 IntellIJ 中的一个问题(它编译得很好)。
  2. 例如像这样使用 JQuery:

    import org.scalajs.jquery.jQuery 
    ..
    jQuery("#showCheckbox").value()
    

    一旦您的 id 变得更加动态-无论如何您都将需要类似的东西(至少这是我所知道的;))-> jQuery(s"#${elem.id}").value()

于 2019-01-01T19:14:31.150 回答
0

您可以利用Event传入的 scalaJS,可能类似于:

oninput={ev: Event => name.value = ev.target.asInstanceOf[HTMLInputElement].value}

于 2020-09-02T02:31:59.773 回答