Search code examples
scalaperformancedomscala.jsbinding.scala

Toomany DOM updates


The link [https://ccamel.github.io/playground-binding.scala/index.html#playground-binding.scala/home] has few demos of binding.scala I have used DomListner extension in chrome to understand the dom events. I found for each interaction there are hundreds of DOM events fired. For example one click on calculator button results in 114 events.

  1. It this a performance issue ?
  2. Does binding.scala library need performance improvements ?
  3. Does the code written using binding.scala need optimization ?

DomListener ScreenShot


Solution

  • It's the expected behavior, because the DEMO that you mentioned recreated anchor elements, explicitly.

    According to the Scaladoc for bind method:

    Each time the value changes, in the current @dom method, all code after the current bind expression will be re-evaluated

    As a result, the calc.bind call at here forces recreating the anchor element.


    I created a pull request to change the class attribute instead, by avoiding the calc.bind call before XHTML literals.