binding.scala component to string conversion

135 Views Asked by At

I have a binding.scala component and a third party scalajs library that takes html string as input. How can the b.s component can be passed to the library method as an argument?

Specifics:

import com.thoughtworks.binding.Binding._
import com.thoughtworks.binding.{Binding, dom}

@dom def renderComponent: Binding[Element] = <h1> I am a component </h1>

def thirdPartyFunction(str: String) = {
  ...
}

I would like to call the function like thirdPartyFunction(renderComponent.bind.outerHtml.toString). However that call never gets executed.

I think this is related to some basic understanding with B.S up until now I have not faced with. Any suggestions?

1

There are 1 best solutions below

0
mcku On

The answer is to wrap the .bind call with watch. For instance, in the window.onload function, something similar to the following:

   window.onload = _ => Binding{
       thirdPartyFunction(renderComponent.bind.outerHtml.toString)
   }.watch() 

Note that it is possible to initialize components without functions like window.onload. See this question How to execute some init after element loaded to dom with Binding.scala