2017-08-22 4 views
0

数日前に私はbinding.scalaについて読んだので、とても涼しかったので、私は自分の1ページのアプリケーションを書くことにしました。binding.scalaで "Yield"が機能しない

"li"項目に "li"要素を追加しようとしていますが、コンポーネントのように見えます。には更新が表示されません。

以下のコード:

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

@dom def Want = { 
println(movies.bind, "[email protected]#[email protected]#[email protected]#!") 
<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, "[email protected]#[email protected]#[email protected]#!") 
<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> 

} しかし、コードは動作しません:私は、コードを更新以下のコメントの後

UPDATE

+0

更新されたコードが完全に混乱しているので、私はあなたの質問にdownvoteを与えました。 https://scalafiddle.io/で生産可能な例を作成し、この質問からリンクすると、助けになる可能性が高くなります。 –

答えて

2

for (movie <- movies.value)for (movie <- movies)に変更してください。 the Scaladoc of value methodによると

注:このメソッドは、@domメソッド本体の内部で呼び出されてはなりません。

+1

多分間違いがあります:(movie < - movies.value)for(movie < - movies.value)に変更してください –

+0

答えが更新されました。 –

関連する問題