2014-02-26 2 views
1

현재 일부 정렬이 필요한 테이블에서 작업하고 있습니다. 프로젝트가 Angular (v1.2.12)를 사용하고 있기 때문에 ngTable 모듈을 사용하기 시작했습니다 (v0.3.2).제목을 클릭 할 때 ngTable을 정렬하지 않습니다.

기본 정렬은 제목이지만 연도는 정렬 옵션으로 사용할 수도 있습니다. 페이지를로드 할 때 제대로 작동하지만 표 머리글을 클릭하면 클릭 된 열이 정렬되지만 정렬은 머리글에 반영되지 않으며 정렬 매개 변수도 더 이상 설정되지 않습니다.

디버깅을 시작할 때 params.sorting()은 다음을 반환합니다. {title : undefined} 그 순간부터 더 이상 정렬 가능한 헤더를 클릭 할 수 없으며 더 이상 아무것도 수행하지 않습니다. . 내가 모르는 뭔가가 있다고 생각

은 찾을 수 없습니다 무엇을 생각

다음과 같이 내 데이터는 다음과 같습니다

[{ 
    "year": 2014, 
    "title": "Golden title" 
}, { 
    "year": 2013, 
    "title": "Golden title" 
}, { 
    "year": 2013, 
    "title": "Another title" 
}, { 
    "year": 2014, 
    "title": "Whetshoverwerd xsade aas" 
}, { 
    "year": 2013, 
    "title": "Another brilliant title" 
}, { 
"year": 2013, 
    "title": "Wherever I may SOAP" 
}] 

뷰 :

<table ng-table="tableParams" class="table"> 
    <tbody> 
     <tr ng-repeat="document in $data"> 
      <td data-title="'Year'" sortable="'year'">{{document.year}}</td> 
      <td data-title="'Title'" sortable="'title'"><a href="#">{{document.title}}</a></td> 
     </tr> 
    </tbody> 
</table> 

뷰입니다 지시문,

angular.module('appDirectives').directive('myModuleDirective', function() { 
    // Runs during compile 
    return { 
     restrict: 'E', 
     templateUrl: 'path/to/view.html', 
     replace: true, 
     controller: function ($scope, $timeout, $filter, TitleList, ngTableParams) { 

      $scope.tableParams = new ngTableParams({ 
       page: 1, // show first page 
       count: 10, // count per page 
       sorting: { 
        title: 'asc' // initial sorting 
       } 
      }, { 
       total: 0, // length of data 
       getData: function ($defer, params) { 
        TitleList.get({}, function (data) { 
         var orderedData = params.sorting() ? 
          $filter('orderBy')(data, params.orderBy()) : 
          data; 

         params.total(orderedData.length); 
         orderedData = orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count()); 
         $defer.resolve(orderedData); 
        }); 
       } 
      }); 
     } 
    }; 

답변

1

문제는 아직 명확하지 않지만 ngTable의 예제는 v0.3.1을 사용하고 v0.3.2를 사용합니다. 이 문제는 이전 버전을 사용하여 해결되었습니다.

var sortingParams = (event && (event.ctrlKey || event.metaKey)) ? $scope.params.sorting() : {}; 

:

나도이 문제를 했어
+0

그래서 0.3.2에서 0.3.1로 이동했는데 작동합니까? 0.3.2를 사용하고 있는데 테이블 데이터가 잘로드되지만 헤더를 클릭해도 정렬이되지 않습니다. 테이블 데이터를 동적으로로드하고 있습니다. – Ronnie

1

, 나는이 라인으로 NG 테이블 코드 라인 (502)을 대체하여이 일을 해결

v0.3.2에서 몇 가지 버그가있을 수 있습니다 이것이 올바른 수정인지 확신 할 수 없습니다 (왜 '이벤트'가 정의되지 않았는지 확실하지 않음).하지만 문제가 해결되었습니다. 그러니 적절한 해결책으로 생각하지 마십시오. 제 2 펜스 일뿐입니다.

1

이 문제가 발생했습니다. 응답 형식 문제였습니다. 내가 배열, 전 대신 객체를 반환하고, 때문에
문제였다 :

나쁜 형식 :

{ 
"data": { 
    "items": { 
     "0": { 
      "post_id": "26", 
      "post_date": "2015-06-24 00:00:00" 

좋은 형식 : 테이블은 객체로 작동

{ 
"data": { 
    "items": [ 
     { 
      "id": "26", 
      "create_date": "2015-02-19 14:15:44", 

하지만 모든 기능이 아닙니다.