"产率"不能在binding.scala中工作

时间:2017-08-22 11:54:33

标签: scala scala.js binding.scala

几天前我读到了binding.scala,我发现它很酷,所以我决定编写自己的单页应用程序。

问题在于我试图添加" li"项目进入" ul"元素,但似乎组件旺旺没有看到更新。

以下代码:

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>

} 但是,代码不起作用。

1 个答案:

答案 0 :(得分:2)

请将for (movie <- movies.value)更改为for (movie <- movies)

根据the Scaladoc of value method

  

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