Использование события onclick в bootstraptoggle в приложении scala-js - PullRequest
0 голосов
/ 04 сентября 2018

В моем приложении scala-js я хочу использовать библиотеку bootstraptoggle , чтобы создать красивую кнопку переключения.

Пока я создаю кнопку-переключатель с помощью метода, который выглядит примерно так:

import scalatags.JsDom
import scalatags.JsDom.all._
// ...


def createToggleButton(): JsDom.TypedTag[Input] = {
  def onClick = println("HELLO WORLD!")
  input(id := "myToggle",
        attr("data-toggle") := "toggle",
        `type` := "checkbox",
        onclick := onClick,
        attr("data-on") := "ON",
        attr("data-off") := "OFF",
        attr("data-onstyle") := "success",
        attr("data-width") := "85",
        attr("data-height") := "26")
}

При рендеринге и добавлении его в мой DOM это выглядит так:

toggle off toggle on

Пока все работает. Особенность заключается в следующем: При рендеринге страницы («F5») моя консоль (Chrome - «F12») показывает один «HELLO WORLD!» вывод с самого начала. После этого событие onclick, похоже, больше не срабатывает .

Кто-нибудь знает, как это исправить?

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

Так как я не смог заставить загрузчик работать, я решил сделать свой собственный. Итак, вот мое решение: ToggleSwitchWithLabels.scala

0 голосов
/ 04 сентября 2018

Вы должны присвоить функцию вида () => action() атрибуту onclick. В настоящее время вы оцениваете def onClick один раз и сохраняете результат этого вызова функции (который является значением ()) в атрибуте onclick. Вместо этого вы должны написать

onclick := { () => onClick }
...