2016-07-05 6 views
1

jquery.sparkline.js를 사용하여 HTML 표에 막 대형 차트를 표시하려고합니다. 그러나 ng-repeat를 사용하는 순간 스파크 라인이 작동하지 않습니다.jQuery Angularjs ng-repeat에서 작동하지 않는 스파크 라인 막 대형 차트

<tr ng-repeat='x in [1]'> 
    <td>{{x}}</td> 
    <td>33</td> 
    <td> 
     <span class="dynamicbar">Loading..</span> 
    </td> 
</tr> 

는 u는 볼 때 더미 데이터하지만 아무 것도 NG-반복,하지만 내가 사용 후 나의 스파크 렌더링하지 않는 NG를-반복합니다. 내가이 옵션을 원한다면 다른 행을 가진 html 테이블에 다른 데이터가 있으므로 테이블 열 중 하나에서 barchart가 필요합니다. 여기

는 plunker입니다 :

http://plnkr.co/edit/MQ0JFg75RvfKKFiATz84?p=preview

우리가 NG 반복 및 막대 차트가

을 보여줍니다 제거하면 plunker 작동

사람은 NG 반복을 사용하여이 작업을하고 결합시킬 것을 도울 수있다 막대 차트.

+0

가 작동하지 않습니다. Angular가 작동하는 방식과 시도하고있는 것처럼 컨트롤러에서 jQuery 플러그인을 초기화하지 않아야하는 이유를 이해하려고 시도 했습니까? – dfsq

+0

답장을 보내 주셔서 감사합니다 @ dfsq,하지만 어떻게 지금이 문제를 해결해야합니까? –

+0

지시어를 만들어야합니다. 어쨌든 제가 게시 한 답변을 확인하십시오. – dfsq

답변

5

Angular 컨트롤러에서 jQuery 플러그인을 초기화하지 마시기 바랍니다. 컴파일 및 렌더링으로 인해 이후 HTML 요소가 DOM에 존재한다는 보장이 없기 때문입니다.

app.directive('dynamicbar', function() { 
    return { 
    scope: { 
     data: '=' 
    }, 
    link: function(scope, element) { 
     element.sparkline(scope.data, { 
     type: 'bar', 
     barColor: 'green', 
     width: 300, 
     height: '50', 
     barWidth: 8, 
     barSpacing: 3, 
     colorMap: ["green", "yellow", "red"], 
     chartRangeMin: 0 
     }); 
    } 
    } 
}) 

및 템플릿에 사용 : 대신 간단한 지침을 만들

<tr ng-repeat='x in items'> 
    <td>22</td> 
    <td>33</td> 
    <td> 
     <span dynamicbar data="x.bars">Loading...</span> 
    </td> 
</tr> 

데모 : 물론http://plnkr.co/edit/6wO6zKcRYdtrN6Xmbj9E?p=preview

+0

와우 대단히 감사합니다. –

+0

도움이 되었기 때문에 기꺼이 대답을 수락하십시오. – dfsq

+0

각도 2 사용자 지정 지시문을 사용하여 sparkline barchart를 바인딩하려고하지만 오류가 발생합니다. sparkline은 함수가 아닙니다. 아래는 plunker입니다 : http://plnkr.co/edit/BpY6Kd1bSMzWTKSZqJzv?p=preview –