Я пытаюсь заполнить таблицы данных из API, используя angularjs один, но проблема в том, что когда я загружаю страницу, таблица заполняется, но внизу появляется сообщение «Нет данных, доступных в таблице», и если Я пытаюсь отсортировать, изменить фильтр nb. of show все данные исчезли и отображается только «Нет данных, доступных в таблице».
HTML
<table id="example" ng-if="controls" datatable="ng"
class="table table-bordered bordered table-striped table-condensed datatable"
ui-jq="dataTable"
ui-options="dataTableOpt" >
<thead>
<tr>
<th>Name</th>
<th>Position</th>
<th>Office</th>
<th>Age</th>
<th>Start Date</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="control in controls">
<td>@{{control.train}}</td>
<td>@{{control.time}}</td>
<td>@{{control.location}}</td>
<td>@{{control.case}}</td>
<td>@{{control.quantity}}</td>
</tr>
</tbody>
</table>
Служба
(function () {
var app = angular.module('mainApp');
app.service('MyService', ['$http','$q', function ($http,$q) {
this.getControls = function() {
var def = $q.defer();
$http.get("/api/control")
.then(function(data) {
def.resolve(data);
},function(error) {
def.reject(error);
});
return def.promise;
}
}]);
})();
Контроллер
(function () {
var app = angular.module('mainApp', ['ui.select2', 'ngAnimate', 'ngSanitize', 'toaster', 'ui.utils', 'ui.bootstrap']);
app.controller('ControlsController', ['$scope', '$filter', '$window', 'MyService', '$http', '$q', '$timeout', function ($scope, $filter, $window, MyService, $http, $q, $timeout) {
$scope.controls = [];
angular.element(document).ready(function () {
MyService.getControls().then(function (result) {
$scope.controls = result.data.data;
});
});
}]);
})();
Я пытался выставить, ng-if, ng-show, таймаут, но он не работает. Только если я объявляю массив со всеми значениями в контроллере, то показываются строки и фильтры, поиск, работает. Это проблема, связанная с запросом http, данные загружаются после создания DOM, но я не могу найти решение.
Кто-то может мне помочь?