2016-03-30 24 views
1

Bir açısal datatable üzerinde sunucu tarafı sayfalama uygulamak çalışıyorum ama aşağıdaki hatayı almaya devam ediyorum:açısal datatables sunucu sayfalandırma

purchasesTable.jade

: Error: You cannot use server side processing along with the Angular renderer!

aşağıdaki ilgili kodu bakınız

.panel.panel-default.userTable 
    .panel-heading.tableStatementHeader Purchases 
    .panel-body 
    div() 
     table.row-border.hover(datatable='ng', dt-options='purchasesCtrl.dtOptions', dt-columns='purchasesCtrl.dtColumns') 

purchasesTable.controller.js

(function() { 
     'use strict'; 

     angular 
      .module('app.purchasesTable') 
      .controller('PurchasesTableController', PurchasesTableController); 

     PurchasesTableController.$inject = ['envService','$resource', 'DTOptionsBuilder', 'DTColumnBuilder','$http','$state','$stateParams','PurchasesTableService', '$scope']; 
     function PurchasesTableController(envService, $resource, DTOptionsBuilder, DTColumnBuilder,$http,$state,$stateParams,PurchasesTableService,$scope) { 

      var vm = this; 

      activate(); 

      //////////////// 

      function activate() { 
       vm.id = $stateParams.id; 

       //STYLE TABLES 
       vm.dtOptions = DTOptionsBuilder.newOptions() 
           .withOption('ajax', function(data, callback, settings){ 
            console.log(data); 

            PurchasesTableService.getData() 
            .then(function(result){ 
             console.log('THIS', result); 
            }); 
           }) 
           .withDataProp('data') 
           .withOption('serverSide', true) 
           .withOption('processing', true) 
           .withOption('order', [[0, 'desc']]) 
           .withPaginationType('full_numbers'); 
       vm.dtColumns = [ 
        DTColumnBuilder.newColumn('event_date').withTitle('Event Date'), 
        DTColumnBuilder.newColumn('title').withTitle('Store'), 
        DTColumnBuilder.newColumn('reason').withTitle('Reason'), 
        DTColumnBuilder.newColumn('amount').withTitle('Amount'), 
        DTColumnBuilder.newColumn('locking_date').withTitle('Locking Date'), 
        DTColumnBuilder.newColumn('id').withTitle('ID'), 
        DTColumnBuilder.newColumn('sid').withTitle('SID') 
       ]; 

     } 
    } 
})(); 

purchasesTable.service.js orada bazı sözdizimi hataları yukarıdaki kodda ama ben ilk sunucu tarafında işleme hatası geçmiş olsun gibi olamaz biliyoruz

(function() { 
    'use strict'; 

    angular 
     .module('app.purchasesTable') 
     .service('PurchasesTableService', PurchasesTableService); 

    PurchasesTableService.$inject = ['$http']; 
    function PurchasesTableService($http) { 
     this.getData = getData; 

     //////////////// 

     function getData() { 
      var gaBody = { 
      'start':0, 
      'length':10, 
      'columns[0][data]':1, 
      'order[0][column]':0, 
      'order[0][dir]':'desc' 
      }; 
      var req = { 
      method: 'POST', 
      url: 'api/endpoint', 
      headers: { 
       'Authorization': 'something something' 
      }, 
      data: gaBody 
      }; 
      return $http(req).then(function(resp) { 
      return resp.data.data; 
      }); 
     } 
     } 
})(); 

. Aslında, API son noktasına bir http POST isteği yapıyor ve ng-repeat kullanarak yanıtı gösteriyordum. Bu hatanın ng-repeat nedeniyle atıldığını düşündüm ama bu kodu çıkardıktan ve tablo verisini .withOption('ajax', etc. aracılığıyla oluşturmaya çalıştıktan sonra, hata hala atılıyor. Herhangi bir yardım büyük takdir edilecektir. Teşekkür ederim.

+0

Sınır ve ofset parametrelerini nasıl geçirirsiniz? – zygimantus

cevap

3

datatable direktifi beyanı dan ng çıkarın, artık AJAX ile render olsa bile, yani

table.row-border.hover(datatable='', dt-options='purchasesCtrl.dtOptions', dt-columns='purchasesCtrl.dtColumns') 
           ^^  

, hala ng-repeat tarafından render olarak tablo sürtüşmenizin.

İlgili konular