web/mhtml

javascript callback 처리 하기 - checkbox

wefree 2021. 10. 25. 15:09

문제

dropdown callback 처리 처럼 reactive, non-reactive 하게 각각 사용할 수 있다. 

여기서는 reactive 하게 동작하게 해 보자.

코드

import mhtml._
import org.scalajs.dom
import scala.scalajs.js


val isChecked: Var[Boolean] = Var(false)

val content =
  <div>
    <div id="MY_CHECKBOX" class="ui checkbox">
      <input type="checkbox" onclick={e: js.Dynamic => isChecked := e.target.checked.asInstanceOf[Boolean]}></input>
      <label>Label</label>
    </div>
    <div>isChecked: {isChecked.map(_.toString)}</div>
  </div>

mount(dom.document.getElementById("main_content"), content)
import mhtml._
import org.scalajs.dom
import scala.scalajs.js

val isChecked: Var[Boolean] = Var(false)

val content =
    <div>
        <div id="MY_CHECKBOX" class="ui checkbox">
            <input type="checkbox"></input>
            <label>Label</label>
        </div>
        <div>isChecked: {isChecked.map(_.toString)}</div>
    </div>

mount(dom.document.getElementById("main_content"), content)

val checkedHandler: js.Function0[Unit] = () => isChecked := true
val uncheckedHandler: js.Function0[Unit] = () => isChecked := false

js.Dynamic.global
    .$("#MY_CHECKBOX")
    .checkbox( js.Dictionary("onChecked" -> checkedHandler, "onUnchecked" -> uncheckedHandler))