2015-07-24 2 views
3

Я использую ngTable в большом проекте. Какова цель функции getData, отправленной в параметрах таблицы?Какова цель функции getData() в ngTable

vm.tableParams = new ngTableParams({ 
     page: 1,   // show first page 
     count: 10   // count per page 
    }, { 
     total: data.length, // length of data 
     getData: function ($defer, params) { 
      $defer.resolve(data.slice((params.page() - 1) * params.count(), params.page() * params.count())); 
     } 
    }); 

Я думаю, что data массив объектов в мой контроллер, и что данные не найдены в моем DOM как DataTables делает. Я также видел объект $data, который создает путаницу.

Бонус: Зачем нужен slice() Нужна информация?

+0

'slice' здесь для нумерации страниц. –

ответ

3

Целью метода getData является получение данных и передача их в ngTable для рендеринга. Предполагается загрузить/загрузить строки, которые должны отображаться на текущей странице, в соответствии с выбранными фильтрами, сортировкой и т. Д. (Для этого вы используете объект params).

Когда данные загружены, скажем с помощью запроса ajax, вы должны разрешить объект обещания, переданный в функцию getData, с подготовленным массивом строк.

В приведенном выше примере data массив - это локальная переменная, поэтому нет необходимости выдавать запрос ajax для его загрузки (это просто для демонстрации), поэтому вы можете просто передать это, чтобы обещать. Кроме того, для имитации подкачки выполняется дополнительная нарезка, например, если она исходит из уже разрезанного сервера.

Обычно getData будет использоваться что-то вроде этого:

getData: function ($defer, params) { 
    $http.get('/accounts/', {params: {page: params.page()}}).then(function(response) { 
     $defer.resolve(response.data); 
    }); 
} 
Смежные вопросы