【问题标题】:"Yield" doesn't work in binding.scala“产量”在 binding.scala 中不起作用
【发布时间】:2018-01-30 16:46:52
【问题描述】:

几天前,我阅读了有关 binding.scala 的文章,发现它很酷,因此我决定编写自己的单页应用程序。

问题是我正在尝试将“li”项添加到“ul”元素中,但组件 Want 似乎没有看到更新。

以下代码:

case class Movie(title: Var[String], raring: Var[Int], watched: Var[Boolean])
var movies = Vars.empty[Movie]

@dom def Want = {
println(movies.bind, "!@#!@#!@#!")
<div class="want">
  <ul>
    {for (movie <- movies.value) yield {
    <li>
      <div>
        <span>
          {movie.title.bind}
        </span>
        <button onclick={event: Event => {
          event.preventDefault()
          movies.value.remove(movies.value.indexOf(movie))
          println(movies.value)
        }}></button>
      </div>
    </li>
  }}
  </ul>
</div>

当我更改电影时,什么也没有发生。

更新

在下面的评论之后我更新了代码:

def remove(movie:Movie) = {
    movies.value.-=(movie)}
@dom def Want = {
println(movies, "!@#!@#!@#!")
<div class="want">
  <ul>
    {for (movie <- movies.bind) yield {
    <li>
      <div>
        <span>
          {movie.title.bind}
        </span>
        <button onclick={event: Event => {
          event.preventDefault()
          remove(movie)
        }}></button>
      </div>
    </li>
  }}
  </ul>
</div>

} 但是,代码不起作用。

【问题讨论】:

  • 我对您的问题投了反对票,因为您更新的代码完全一团糟。如果您在 scalafiddle.io 上创建一个可生产的示例并从此问题链接到它,您将更有可能获得帮助。

标签: scala scala.js binding.scala


【解决方案1】:

请将for (movie &lt;- movies.value) 更改为for (movie &lt;- movies)

根据the Scaladoc of value method

注意:不得在@dom 方法体中调用此方法。

【讨论】:

  • 可能有错误:请将 for (movie
猜你喜欢
  • 2018-01-06
  • 2018-08-13
  • 2023-03-13
  • 2015-02-06
  • 1970-01-01
  • 2014-06-28
  • 2017-02-05
  • 2014-01-30
  • 2017-01-02
相关资源
最近更新 更多