2017-06-26 2 views
2

をコンポーネントをクリックすると、単一のファイルコンポーネント計算プロパティは、私はいくつかのハードコーディングされたデータのための簡単な可視化をレンダリングするためにChart.Jsを使用して単一のファイル構成要素を持ってレンダリングします。私は、index.htmlのheadセクションのCDNを通じてChart.Jsライブラリを呼び出しています。VueJs/ChartJs - 私はVueの開発ツールで

私は公式のWebpackテンプレートを使用しています。

何らかの理由で、私はVueの開発ツールの拡張機能の内部コンポーネントをクリックしない限り、チャートは表示されません。

私が作成した/マウントされ、それが働いていないに計算されたから、それを変更しようとしました。

ここに私のコードです。これを適切にレンダリングする助けがあれば、非常に感謝しています。

<template lang="html"> 
    <div> 
    <div class="row"> 
     <div class="col-sm-12 col-md-4"> 
     <canvas id="carbChart"></canvas> 
     </div> 
    </div> 
    </div> 
</template> 

<script> 

export default { 
    data() { 
    return { 
     calories: 3000, 
     childSex: 'male', 
     childAge: 'eighteen' 
    } 
    }, 
    computed: { 
    nutrientCharts: function() { 
     let calories = this.calories; 

     let carbCtx = document.getElementById('carbChart').getContext('2d'); 

     let carbChart = new Chart(carbCtx, { 
     type: 'doughnut', 
     data: { 
      labels: ['Low', 'Good', 'Too Much'], 
      datasets: [{ 
      label: 'carbs', 
      data: [calories * .45, calories * .65, calories * 1], 
      backgroundColor: ['orange', 'blue', 'red'] 
      }] 
     } 
     }); 
    } 
    } 
} 
</script> 
+2

計算さプロパティは遅延ロードされているので、彼らは、テンプレートまたはVUEインスタンスのいくつかの他の部分までは計算できません。コードがそれらを参照します。どこでも 'nutrientCharts'を参照していないので、メソッドは呼び出されていません。 – thanksd

答えて

3

computedプロパティでメソッドを定義しましたが、使用したことはありません。

あなたはこの実行を取得したいと仮定すると、取り付けられた上でチャートを読み込む:

mounted() { 
    this.nutrientCharts(); 
}, 
methods: { 
    nutrientCharts: function() { 
    // your code here 
    } 
} 
+0

それはトリックでした。どうもありがとうございます! –

+0

うれしいことを聞いて嬉しいです:) – Charith