Twitter bootstrap 使用bootstraptoggle';scala js应用程序中的onclick事件

Twitter bootstrap 使用bootstraptoggle';scala js应用程序中的onclick事件,twitter-bootstrap,scala,scala.js,scalatags,Twitter Bootstrap,Scala,Scala.js,Scalatags,在我的scala js应用程序中,我想使用库创建一个漂亮的开关按钮 到目前为止,我正在通过一种类似以下的方法创建切换按钮: import scalatags.JsDom import scalatags.JsDom.all._ // ... def createToggleButton(): JsDom.TypedTag[Input] = { def onClick = println("HELLO WORLD!") input(id := "myToggle", a

在我的scala js应用程序中,我想使用库创建一个漂亮的开关按钮

到目前为止,我正在通过一种类似以下的方法创建切换按钮:

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时,它看起来如下所示:

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")
}

到目前为止一切正常。然而,奇怪的是: 呈现页面(“F5”)时,我的控制台(Chrome-“F12”)显示一个“HELLO WORLD!”从一开始就输出。此后,onclick事件似乎不再触发

有人知道如何解决这个问题吗?

您应该为属性
onclick
提供一个形式为
()=>action()
的函数。当前,您正在对
def onClick
进行一次评估,并将该函数调用的结果(即
()
值)存储在
onClick
属性中。相反,你应该写作

onclick := { () => onClick }
您应该为属性
onclick
指定一个形式为
()=>action()
的函数。当前,您正在对
def onClick
进行一次评估,并将该函数调用的结果(即
()
值)存储在
onClick
属性中。相反,你应该写作

onclick := { () => onClick }

因为我无法让引导开关工作,所以我决定自己做一个。所以,这里是我的解决方案:

因为我无法让引导切换正常工作,所以我决定自己做一个。因此,我的解决方案是:

不幸的是,这似乎不起作用。我试着编写
onclick:={()=>println(“HELLO WORLD!”)}
但是现在我没有得到任何输出。我注意到它与
onchange:={()=>println(“HELLO WORLD!”)}
一起工作,但是我需要一个小的解决方案来区分用户是否按下了按钮或者它是否被API更改,所以我更倾向于使用
onclick
。不幸的是,这似乎不起作用。我试着编写
onclick:={()=>println(“HELLO WORLD!”)}
但是现在我没有得到任何输出。我注意到它与
onchange:={()=>println(“HELLO WORLD!”)}
一起工作,但是我需要一个小的解决方案来区分用户是否按下了按钮或者它是否被API更改,因此我更倾向于使用
onclick