2017-09-06 19 views
0

私はVue.jsアプリケーションで複雑なビジュアライゼーションを作成するためにd3.jsプラグインを使用しています。 d3プラグインによって追加された要素にカスタムvueディレクティブを適用したいと思います。
vue2で廃止された$コンパイル機能は、私が探しているものです。DOM要素をVue.jsコンポーネントに変換

domからvueコンポーネントの要素を動的に変更するにはどうすればよいですか?

+0

は[Vue.compile(https://vuejs.org/v2/api/#Vue-compile)まだ使用可能である:上記のリンクから$mounted

This is a good set of example

基礎しかし、DOMに現在ある要素ではなく文字列が必要です。 d3の追加要素を削除して文字列に変換し、おそらくVue.compileを使用してゲームをプレイすることもできますが、それはハックです。これ以上知らなければ、これは答えるのが難しいです。 – Bert

+0

@Bert、ご意見ありがとうございます。私はそれを考えていたか、またはこのようなドームのような影を作ることがこのコードで行われました。私はこれらのソリューションを拒否しました。私は、レンダリングの副作用が多種多様になると思います。 「もっと知っている」という点で、他の詳細は何ですか? – brenzy

+1

Vueは常にレンダリング関数にコンパイルされるため、d3レンダリングを行うと、2度レンダリングされます。既存のDOMを拡張するものではありません。伝統的に、これらの種類のライブラリを使用すると、VueはDOMをレンダリングし、ライブラリで拡張できます。 – Bert

答えて

0

お探しの物件は$mountedです。キーmountedに機能を提供すると、d3の視覚化をインスタンス化できます。

<template> 
    <svg width="500" height="300"></svg> 
</template> 

<script> 
const d3 = require('d3'); 
export default { 
    mounted: function() { 
    // this.#el - is the root element in <template> 
    // in this case it is <svg> tag 
    d3.select(this.$el) 
     .append('circle') 
     .attr('cx', '250') 
     .attr('cy', '150') 
     .attr('r', '100') 
    } 
} 
</script> 
+0

あなたのお返事ありがとうございますが、それは私が探しているものではありません。私はすでにマウントされた関数のすべてのd3要素を追加しました。今度は、追加されたアイテムを取り出し、それらをvueエレメントに変更したいと思います。上の例では、 "円"にvue指示を追加したいと考えています。 – brenzy

+0

'動的に要素を変更する'私は十分にはっきりしていません。 vue.js + d3.jsを使ってインタラクティブなビジュアライゼーションを作成したいと思っていますか?次の例をご覧ください:https://corpglory.github.io/d3vue/#/pie-chart-local-component?これは基本的なマウント>時計>更新 – xNok

+0

私は既にd3とvue.jsと対話型の視覚化を持っています。これはプロパティの変更に基づいて再描画できます。これらすべての例では、d3によって作成された要素のいずれもvueバインディングを持たず、属性の更新はすべてd3コードによって行われます。 – brenzy

関連する問題