2017-12-25 13 views
0

Chart 개체에서 getValue 메서드에 액세스하려고하지만 함수가 정의되지 않은 상태가됩니다. 개체 내부에서 vuejs 메서드에 액세스하는 방법? (Vuejs 2)

<template> 
    <div> 
     <canvas width="600" height="400" ref="canvas"></canvas> 
    </div> 
</template> 
<script> 
    import Vue from 'vue'; 
    import Chart from 'chart.js'; 
    import Axios from 'axios'; 

    export default { 
     mixins: [DateRangeMixin], 
     props: { 
      // other props... 
      callback: false, 
     }, 

     data() { 
      return { 
       chart: '', 
      }; 
     }, 

     mounted() { 
     // ... 
     }, 

     methods: { 

     //other methods..., 
       getValue(data) { 
        if (data === 1) { 
         return 'Up' 
        } else if(data === 0) { 
         return 'Down'; 
        } 
       }, 
      render(data) { 
       this.chart = new Chart(this.$refs.canvas, { 
        type: 'line', 
        data: { 

         labels: Object.keys(data), 
         datasets: [{ 
          // a lot of data ....     
          data: Object.values(data), 

         }] 

        }, 
        options: { 
         scales: { 
          yAxes: [{ 
           ticks: { 
            beginAtZero: true, 
            callback(label, index, labels) { 
             return this.getValue(label); // <-- Tried this and got: 'this.getValue is not a function'. I understand it bounces to new Chart object, but how to resolve this? 
            } 
           } 
          }] 
         } 
        } 

       }); 

      }, 
     }, 
    }; 
</script> 

나는 차트가 객체와 this 그것을 가리키는 그것 때문에 이해하지만 어떻게이 문제를 해결 않으며 콜백에서 내 방법에 액세스?

export default ... variable으로 설정하면 variable.methods.getValue을 통해 내 방법에 액세스 할 수 있지만이 시나리오에서는 목표를 어떻게 달성 할 수 있습니까?

+1

캔버스에 ID를 지정하고 문서를 가져 와서 데이터, 레이블 및 옵션으로 제공하는 것이 좋습니다. 그것을 복잡하게 할 필요가 없습니다. 그렇지 않으면 vue chartjs 래퍼를 사용하십시오. https://github.com/apertureless/vue-chartjs – samayo

+0

@samayo 여기에 큰 프로젝트가 있고 DOM을 가지고 놀고 다시 jQuery로 돌아가는 것은 결국 과잉이 될 것입니다. chartjs 래퍼는 내가 가지고있는 최선의 선택 인 것 같다 - 그것이 존재한다는 것을 몰랐다 - 고마워! – Mkey

+1

var self = this를 지정하면됩니다. 차트를 작성하기 직전에 자체 구성 요소 속성에 액세스 할 수 있습니다. –

답변

1

new Chart()을 생성하기 바로 전에 이것을 변수 self에 할당하십시오 : var self = this;. 그러면 self을 통해 구성 요소 속성에 액세스 할 수 있습니다.