Смешивание фреймворков - общеизвестно плохая идея.Вы используете плагин jquery для рендеринга таблицы, сгенерированной AngularJs.Я уверен, что есть прекрасные компоненты AngularJ, которые могут делать что-то похожее на DataTables.
Вероятно, происходит то, что DOM не обновлялся с визуализированными табличными данными при вызове $('#TblID').DataTable()
.Таким образом, определенная информация недоступна, когда DataTables начинает свое отображение.Если это правильно, хакерским решением было бы вызвать DataTable()
внутри setTimeout()
:
getData.then(function (response) {
if (response.data.success) {
$scope.listdt = response.data.data;
$scope.populateStatus();
$timeout(function() {
$('#TblID').DataTable();
})
loader(false);
}
/* ... */
}
Если это не решит вашу проблему, то я рекомендую не использовать Angular для рендеринга таблицы ипередача ответа функции DataTable напрямую.
getData.then(function (response) {
if (response.data.success) {
$scope.listdt = response.data.data;
$scope.populateStatus();
$('#TblID').DataTable({
data: response.data.data,
columns: [
{ data: 'SpaceID', name: 'ID' },
{ data: 'SpaceKey', name: 'Key' },
{ data: 'SpaceName', name: 'Name' },
{ data: 'SpaceDesc', name: 'Description' },
{ data: 'StatusName', name: 'Status' } /* use more advanced options for style */
],
buttons: [
{ tag: 'edit', className: 'fa fa-pencil fa-lg', action: (e, b) => $scope.edit(b.row().data()) },
{ tag: 'delete', className: 'fa fa-trash fa-lg', action: (e, b) => $scope.delete(b.row().data()) }
]
});
loader(false);
}
/* ... */
}