모바일/Android

NVD3, 버그(?) 피해가기 (Uncaught TypeError)

늘근이 2016. 4. 30. 08:21

NVD3 은 쓰기는 좋은데, 홈페이지에 코드 예제가 완전 잘못적혀있다.

처음 chart를 생성하는데 하나씩 메서드를 연쇄적으로 부르르 패턴으로 객체를 생성하도록 되어있는데,  NVD3 내부로직을 까보니, 그렇게 설계되어있지 않았다.


처음에 NVD3 차트만드는 예제를 살펴보면

  var chart = nv.models.discreteBarChart().optios

      .x(function(d) { return d.label })    //Specify the data accessors.

      .y(function(d) { return d.value })

      .staggerLabels(true)    //Too many bars and not enough room? Try staggering labels.

      .tooltips(false)        //Don't show tooltips

      .showValues(true)       //...instead, show the bar value right on top of each bar.

      .transitionDuration(350)

      ;


이런식으로, 연쇄적으로 내부 메서드를 부르는 디자인패턴인데, 이렇게 해놓으면 다음과 같은 에러가 난다


Uncaught TypeError : nv.models.... is not a function


고로 다음과 같이 options에다가 옵션 배열을 넣어주고 chart객체를 생성해야한다.


nv.addGraph(function() {

  var chart = nv.models.discreteBarChart().options({

    staggerLabels : true,

    tooltips : false,

    showValues : true,

    x : function(d) {return d.label},

    y : function(d) {return d.value},

  });


좀 어이가없다.