Разбиение на страницы Smart Table с помощью st-pipe не работает

Мне нужна помощь с кодом разбивки на страницы (http://plnkr.co/edit/Jv12fcBzm3lvZFqHqDJm?p=preview)

Мои данные огромны (> 1000 тыс. строк). Я хочу сделать запрос только для видимых записей (50 строк на странице). Я запрашиваю вызов службы REST каждый раз, когда пользователь меняет сортировку или страницу.

В своем коде я заменил $http.post() на $timeout, чтобы упростить пример.

  angular.module('app',['smart-table'])
  .controller('mainCtrl',['Resource', function (service) {
    var ctrl = this;
    this.rowCollection = [];
    this.totalMatched = 0;
    this.totalExecutionTime = 0;
    this.paginationStart = 0;

    this.callServer = function callServer(tableState) {
      ctrl.isLoading = true;
      var pagination = tableState.pagination;
      console.log(pagination.number);
      var start = pagination.start || 0;
      var number = pagination.number || 5;

      service.getPage(start, number, tableState).then(function (result) {
         var tstamp = new Date().getTime();
        console.log('Requesting page: '+start+', '+number+','+tstamp);
        ctrl.rowCollection = result.data.items;
        ctrl.totalMatched = result.data.total;
        ctrl.paginationStart = start;
        tableState.pagination.numberOfPages = result.numberOfPages;//set the number of pages so the pagination can update
        ctrl.isLoading = false;
      });
    };
  }])
  .factory('Resource', ['$q', '$filter', '$timeout', '$http', function ($q, $filter, $timeout, $http)
  {
    function getPage(start, number, params) {

        var deferred = $q.defer();
     $timeout(function () {
          deferred.resolve({
            data:  {total:8000, items:[{message:'foo',messagetime:'2016-01-01'},{message:'foobis',messagetime:'2016-02-02'}]},
            numberOfPages: Math.ceil(1000 / number)
          });
        }, 1500);


        return deferred.promise;
      }

      return {
        getPage: getPage
      };
  }
  ]);

Что я делаю неправильно? Благодарим за любую помощь.


person zuko    schedule 17.08.2016    source источник


Ответы (1)


В script.js вы должны заменить:

ctrl.rowCollection = result.data.items;     

by

ctrl.displayedCollection = result.data.items;

Это потому, что в теге таблицы вы использовали st-table="main.displayedCollection" и ng-repeat="item in main.displayedCollection".

person henriquels    schedule 22.08.2016
comment
Спасибо, я заметил, что мне не нужно использовать st-safe-src вместе с st-pipe. Я удалил st-safe-src и он начал работать. - person zuko; 23.08.2016