2014-12-08 6 views
6

html 본문에는 헤더 용 템플릿과 템플리트 용 템플릿 2 개가 있습니다. 헤더 템플릿에는 ngTable 데이터를 CSV 파일 using ngTable Export으로 내보내려면 contents.html 템플릿 파일 안에있는 save and download 버튼이 있지만이 내보내기는 클릭 핸들러가있는 앵커 태그를 동일한 템플릿으로 내보내는 경우에만 작동합니다 .angularjs의 다른 템플릿에서 테이블 데이터를 CSV로 내보내기를 트리거하는 방법은 무엇입니까?

content.html (서식 1)

<a class="btn btn-default export-btn" ng-click='csv.generate($event, "report.csv")' href=''>Export</a> <!-- this works --> 
<table ng-table="tableParams" show-filter="true" class="table" export-csv="csv"> 
     <tr ng-repeat="item in $data" height="10px" class="animate" ng-animate="{enter: 'animate-enter', leave: 'animate-leave'}"> 
      <td data-title="'Date'" align="center" filter="{ 'date': 'text' }" sortable="'date'">{{ item.date | date: 'd MMM yyyy' }}</td> 
      <td data-title="'Label'" align="center" filter="{ 'label': 'text' }" sortable="'label'">{{item.label}}</td>   
      <td data-title="'Count'" align="center" filter="{ 'count': 'text' }" sortable="'count'">{{item.count}}</td> 
     </tr> 
</table> 

HEADER.html 현재 (템플릿 2)

<button class="save-button" ng-click='csv.generate($event, "report.csv")'></button> <!-- does not work--> 

은 별도의 템플릿의 버튼과 CSV로 테이블의 컨텐츠를 수출 제발 도와주세요.

업데이트

Unfinished plunker link.. export not working somehow in plunker

답변

6

당신의 plunkr의 앵커 태그는 파일로 CSV를 다운로드 할 수있는 브라우저 원인이 무엇 ng-href="{{ csv.link() }}를,이 없습니다. 당신을 원하기 때문에,

$scope.exportFile = function($event, fileName) { 
    $scope.csv.generate($event, "report.csv"); 
    location.href=$scope.csv.link(); 
}; 

그러나 :

대신 앵커 태그의 버튼을 사용해야하는 경우, 당신은 할 수있는 다음 csv.generate를 호출하고, 기능 simulate hrefcsv.link()에 의해 반환되는 값으로 location.href을 설정 버튼 및 테이블을 다른 템플릿 파일에서 가져 오려면 different child scopes에 바인딩되어있을 수 있습니다.

<table ng-table="tableParams" export-csv="helper.csv"> 

그런 다음에 컨트롤러를 변경 : 이것에 대한 빠른 해결 방법은 $parent 범위에 존재하는 객체에 create the csv helper에 수출 지시어를 알리는 것입니다 여기에

$scope.helper = { 
    csv: null //will be replaced by the export directive 
}; 

$scope.exportFile = function($event, fileName) { 
    $scope.helper.csv.generate($event, "report.csv"); 
    location.href=$scope.helper.csv.link(); 
}; 

하는 작업 데모입니다 : http://plnkr.co/edit/a05yJZC1pkwggFUxWuEM?p=preview

+1

아마도 내 컴퓨터에 문제가 있어도 plunker 데모가 IE에서 작동하지 않습니다. – user2378769

+0

여기에서 plunker는 Chrome에서 작동하지 않습니다. 그리고 내 프로젝트에서도 테이블 테이블 내보내기 작업을 할 수 없습니다 (helper.csv는 null 값으로 유지됩니다). 그러나 ng-table-dynamic을 사용하고 있습니다. 표준 ng-table을 사용해보아야 할 수도 있습니다. – PJP

+0

@PJP - ng-table 라이브러리에 대한 깨진 링크가 수정되었으며, plunker가 다시 작동합니다. 라이브러리는 bazalt-cms.com 대신 ng-table.com에서 호스팅됩니다. –