2014-09-12 5 views
0

흥미로운 문제가 있습니다. ng 테이블 그룹은 입력 데이터가 rest service json에서 오는 데이터와 동일한 하드 코드 된 경우 올바르게 작동합니다. 하드 JSON 작품 아래
:나머지 서비스 출력을 사용하여 정확히 동일한 데이터가 할당 된 경우 ng 테이블 그룹화가 작동하지 않습니다.

var data = [{name: "Moroni", age: 50, role: 'Administrator'}, 
      {name: "Tiancum", age: 43, role: 'Administrator'}, 
      {name: "Jacob", age: 27, role: 'Administrator'}, 
      {name: "Nephi", age: 29, role: 'Moderator'}, 
      {name: "Enos", age: 34, role: 'User'}, 
      {name: "Tiancum", age: 43, role: 'User'},    
      {name: "Enos", age: 34, role: 'User'}]; 


이것은 내가 응답을 디버깅

var data = response; 

작동하지 않고 내 하드 JSON 데이터와 정확히 동일합니다. 문제가 무엇인지 파악할 수 없습니다.

나는 ng-table 문서를 보았고 같은 것을 따라 갔다. 내 html 및 js 코드는 다음과 유사합니다. - http://bazalt-cms.com/ng-table/example/13

내 코드는 위의 예 13 링크와 매우 유사합니다. 그냥 서비스를 요청하고 비슷한 데이터를 얻고 있습니다. (플 런커 링크 - http://plnkr.co/edit/becd3D)

나는 여전히 같은 문제에 직면 해있다. 누구든지 도와주세요.

도와주세요. 감사합니다

답변

0

나는 "링크 전용"유형의 답을 피하려고 노력할 것입니다. 그러나 이것은 너무 고안된 것이며, 나는 그것을 이해하기 어렵다고 생각합니다.

웹 사이트에 제공된 예는 어떤 유형의 콜백도 사용하지 않으며 실수인지 여부를 모릅니다.

는 여기에 내가 진행 방법은 다음과 같습니다

  • 이 ngTable에 AJAX 로딩을 보여주는 웹 사이트에 대한 예제가있다.
  • 데이터를 그룹화하는 방법을 보여주는 또 다른 예가 있습니다.

나는 그들을 함께 섞었다. 여기에 working demo이 있습니다.

내가 이해 한대로 전체 getData 함수는 비동기식으로 또는 하드 코딩 된 모든 것을 함께 가져와야합니다. 그래서 당신은 그것에게 데이터를 전달해야하지만, 일부 구성 매개 변수는 aswell :

getData: function($defer, params) { 

    // ajax request to api 
    Api.get(params.url(), function(data) { 
     $timeout(function() { 

      // update table params 
      params.total(data.total); 

      // set new data 
      $defer.resolve(data.result); 

     }, 500); 
    }); 
} 
1

하면 서버에서 데이터를 얻을 후 http://plnkr.co/edit/fsNx1h?p=preview

그냥 콜백 기능으로 $ scope.tableParams 이동 여기에 참조하시기 바랍니다.

$http.get('data.json').then(function(response){ 
    var data = response.data 
    $scope.tableParams = new ngTableParams({ 
     page: 1,   // show first page 
     count: 10   // count per page 
    }, { 
     groupBy: function(item) { 
      return 'First letter "' + item.name[0] + '"'; 
     }, 
     total: data.length, 
     getData: function($defer, params) { 

      var orderedData = params.sorting() ? 
        $filter('orderBy')(data, $scope.tableParams.orderBy()) : 
        data; 

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

    }); 
}) 
+0

내 솔루션과 같은 생각이지만, 구현하기 쉽고 이해하기 쉽습니다. 왜냐하면 전체 'tableParams'를 전달하기 때문입니다. 아마 그걸로 갈거야. – Goodzilla

+0

My $ scope.tableParams가 이미 성공 콜백 함수에 있습니다. 여전히 작동하지 않습니다. –