2017-07-05 16 views
1

DOMにロードされたchartjsのようなグラフライブラリでキャンバスを初期化するにはどうすればよいですか?Binding.scalaでDOMにロードされた要素の後に実行する方法

+0

あなたは持っていることbinding.scalaを使用する他の人のコードをd3.js https:// githuと見てくださいb.com/emanresusername/word-cloud-generator/blob/master/ui/src/main/scala/my/will/be/done/wordcloud/component/WordcloudComponent.scala –

+0

@YangBo私はコード解決とは思わない私の問題。例を見て、 'show'が変更された場合はグラフを再描画する必要があります。ですから、binding.scalaのイベントリスナーを使ってクラウドをクラウド化すると思います。 – jilen

+0

それらの再描画コードを 'if'ブロックに入れてみてください。 –

答えて

3

ソリューション1

@dom 
def chart(show: Var[Boolean]) = { 
    if(show.bind) { 
    val myCanvas = <canvas id="chartCanvas"><canvas> 
    yourInitializationCode(myCanvas) 
    myCanvas 
    } else { 
    <!-- don't show canvas --> 
    } 
} 

ソリューション2

カスタムSingleMountPointを作成し、オーバーライドmount方法で初期化コードを置くことができます。

val yourCustomMountPoint = new SingleMountPoint[Boolean](show) { 
    override def mount() = { 
    super.mount() 
    // You custom initialization code 
    } 
    override def unmount() = { 
    // You custom clean up code 
    super.unmount() 
    } 
    override def set(newValue: Boolean) = { 
    // You custom handler when `show` get changed 
    } 
} 

// Inject your custom mount point into the rendering process 
yourCustomMountPoint.bind 
+0

ありがとうございます。それが私の欠けている部分を追加しました。 – jens

関連する問題