Yield не работает в bind.scala

Несколько дней назад я прочитал о 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>

} Однако код не работает.


person Владислав Липатов    schedule 22.08.2017    source источник
comment
Я дал отрицательный ответ на ваш вопрос, потому что ваш обновленный код полностью в беспорядке. Скорее всего, вам помогут, если вы создадите готовый пример на scalafiddle.io и сделаете ссылку на него из этого вопроса. .   -  person Yang Bo    schedule 24.08.2017


Ответы (1)


Измените for (movie <- movies.value) на for (movie <- movies).

Согласно метод значения Scaladoc:

Примечание. Этот метод нельзя вызывать внутри тела метода @dom.

person Yang Bo    schedule 22.08.2017
comment
возможно, есть ошибка: Пожалуйста, измените for (movie ‹-movies.value) на for (movie ‹-movies.value) - person Владислав Липатов; 22.08.2017