2014-11-03 1 views
0

서버에서 ng 테이블에 데이터를로드하고 위치를 변경 한 후 데이터를 다시로드해야합니다. 이것에 대한ng-table을 사용하여 서버에서 데이터를로드하고 다시로드하는 올바른 방법은 무엇입니까?

settlementsystem.controller('ContractsController', ['$scope', '$filter', 'ngTableParams', '$http', function ($scope, $filter, ngTableParams, $http) { 
 

 
     var contractsData = []; 
 

 
     $scope.groupby = 'stateId'; 
 

 
     $scope.tableParams = new ngTableParams({ 
 
      page: 1,       // show first page 
 
      //count: contractsData.length,  // hides pager 
 
      count: 8,   
 
      sorting: { 
 
       stateId: 'asc'    // initial sorting 
 
      } 
 
     }, { 
 
      groupBy: $scope.groupby, 
 
      total: contractsData.length, 
 
      counts: [],      // hides page sizes 
 
      getData: function ($defer, params) { 
 
       // use build-in angular filter 
 
       var filteredData = params.filter() ? 
 
           $filter('filter')($scope.contractsData, params.filter()) : 
 
           $scope.contractsData; 
 

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

 
       if (orderedData != null) { 
 
        //params.total(orderedData.length); // set total for recalc pagination 
 
        $scope.tableParams.total(orderedData.length); 
 
        $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
 
       } 
 
      } 
 
     }); 
 

 
     $scope.$on('reloadContractsData', function (event, args) { 
 
      var request = createRequestObject($scope, $http); 
 
      $http.post('http://dataServer01/DesktopModules/FE21_Services/API/PackingUnitService/LoadPackingUnitObjectListData', request). 
 
        success(function (data, status, headers, config) { 
 
         if (data.length > 0) { 
 
          $scope.status = status; 
 
          $scope.contractsData = data; 
 
          $scope.tableParams.reload(); 
 
         } 
 
        }). 
 
        error(function (data, status, headers, config) { 
 
         $scope.contractsData = data || "Request failed"; 
 
         $scope.status = status; 
 
         alert(data); 
 
        } 
 
      ); 
 
     }); 
 

 
     // set selected row 
 
     $scope.changeSelection = function (user) { 
 
      $scope.contractsData.forEach(function (u) { 
 
       u.$selected = false; 
 
      }); 
 
      user.$selected = true; 
 
     } 
 

 
     $scope.$watch('groupby', function (value) { 
 
      $scope.tableParams.settings().groupBy = value; 
 
      console.log('Scope Value', $scope.groupby); 
 
      console.log('Watch value', this.last); 
 
      console.log('new table', $scope.tableParams); 
 
      $scope.tableParams.reload(); 
 
     }); 
 

 
     $scope.myData = contractsData; 
 
     $scope.gridOptions = { 
 
      contractsData: 'myData', 
 
      enablePaging: false 
 
     }; 
 

 
    }]);

내 질문 :

내가있는 DataPager를 숨기고 싶은 이 아래에있는 내 코드입니다. 그러나 "contractsData.length"또는 "$ scope.contractsData.length"는 알 수 없습니다. 뭔가 잘못 됐음을 안다.

도와주세요.

답변

0
remove var and add $scope during initialization. 



    settlementsystem.controller('ContractsController', ['$scope', '$filter', 'ngTableParams', '$http', function ($scope, $filter, ngTableParams, $http) { 

      $scope.contractsData = []; 

      $scope.groupby = 'stateId'; 

      $scope.tableParams = new ngTableParams({ 
       page: 1,       // show first page 
       //count: contractsData.length,  // hides pager 
       count: 8,   
       sorting: { 
        stateId: 'asc'    // initial sorting 
       } 
      }, { 
       groupBy: $scope.groupby, 
       total: $scope.contractsData.length, 
       counts: [],      // hides page sizes 
       getData: function ($defer, params) { 
        // use build-in angular filter 
        var filteredData = params.filter() ? 
            $filter('filter')($scope.contractsData, params.filter()) : 
            $scope.contractsData; 

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

        if (orderedData != null) { 
         //params.total(orderedData.length); // set total for recalc pagination 
         $scope.tableParams.total(orderedData.length); 
         $defer.resolve(orderedData.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
        } 
       } 
      }); 

      $scope.$on('reloadContractsData', function (event, args) { 
       var request = createRequestObject($scope, $http); 
       $http.post('http://dataServer01/DesktopModules/FE21_Services/API/PackingUnitService/LoadPackingUnitObjectListData', request). 
         success(function (data, status, headers, config) { 
          if (data.length > 0) { 
           $scope.status = status; 
           $scope.contractsData = data; 
           $scope.tableParams.reload(); 
          } 
         }). 
         error(function (data, status, headers, config) { 
          $scope.contractsData = data || "Request failed"; 
          $scope.status = status; 
          alert(data); 
         } 
       ); 
      }); 

      // set selected row 
      $scope.changeSelection = function (user) { 
       $scope.contractsData.forEach(function (u) { 
        u.$selected = false; 
       }); 
       user.$selected = true; 
      } 

      $scope.$watch('groupby', function (value) { 
       $scope.tableParams.settings().groupBy = value; 
       console.log('Scope Value', $scope.groupby); 
       console.log('Watch value', this.last); 
       console.log('new table', $scope.tableParams); 
       $scope.tableParams.reload(); 
      }); 

      $scope.myData = contractsData; 
      $scope.gridOptions = { 
       contractsData: 'myData', 
       enablePaging: false 
      }; 

     }]); 

<!-- end snippet --> 
+0

고마워요. 이것은 정말로 문제였습니다. –

+0

하지만 지금은 또 다른 문제가 있습니다. 데이터를 한 번 정렬 할 수 있습니다. 처음으로 분류는 중요하지 않습니다. 제발 여기에 오류를 보여 주시겠습니까? 고마워. –

관련 문제