У меня есть ситуация, когда я использую смарт-таблицу angularJs для фильтрации.
HTML:
<section class="main" ng-init="listAllWorkOrderData()">
<table st-table="listWorkOrderResponse">
<thead>
<tr>
<th st-sort="id">ID <i></i></th>
<th st-sort="project">Project <i></i></th>
</tr>
</thead>
<tbody ng-repeat="workOrder in listWorkOrderResponse">
<tr>
<td>{{workOrder.id}}</td>
<td>{{workOrder.project}}</td>
</tr>
<tr>
<td></td>
</tr>
</tbody>
</table>
</section>
Я тестирую для 2 разных случаев.
В моем контроллере сначала я вызываю ту же функцию, но отправляю фиктивный массив, а во втором случае я отправляю массив, полученный из вызова API.
1. Dummy data
$scope.listAllWorkOrderData = function () {
var listWorkOrderResponse = [{"id":"1","project":"project1"},{"id":2,"project":"project2"},{"id":"3","project":"project3"}];
}
2. I am using a service and fetching data through api.
$scope.listAllWorkOrderData = function () {
TestService.listAllWorkOrderData().then(function (response, status, headers, config) {
if (response != undefined && response != null) {
if (!$scope.listWorkOrderResponse) {
$scope.listWorkOrderResponse = [];
}
$scope.listWorkOrderResponse = response;
}, function (response, status, headers, config) {
console.log(response);
});
Когда я использую case1, сортировка работает нормально. Но когда я использую case2, сортировка не работает. При нажатии на нее данные просто исчезают. Я попытался отладить, чтобы увидеть, вызывается ли функция listAllWorkOrderData снова, когда мы нажимаем на фильтр. Но она вызывается только один раз, когда страница загружается для заполнения таблицы. Это означает, что данные присутствуют в listWorkOrderResponse. Тогда почему не сортирует?
Я проверил ответ для обеих ситуаций, распечатав их. Единственное отличие, которое я обнаружил, заключалось в том, что к listWorkOrderResponse, который исходит от вызова API, добавлено $$hashKey: "object:363"
.
Может ли кто-нибудь указать мне, какую ошибку я делаю.