Smart-Table "st-sort" not working
Asked Answered
N

3

12

I'm using angular v1.3.15. I'm fetching data by hitting an api and passing it through the scope to the smart table like so

enter image description here

Here is the data format of the 'scope.rowCollection' as seen on the console

enter image description here

Data populates fine but When i'm trying to click on the table-header and sort it using st-sort method, the table values go blank clearly not sorting the column. Here is a view of my html snippet

enter image description here

Can you please tell me what exactly am i doing wrong. The moment i use my own data collection set(NOT hard coded) the whole table values go haywire. I have a feeling its something to do with the variable names that i'm using on the angular end. Any help is much appreciated....Thanks

Namedropping answered 30/3, 2015 at 10:3 Comment(0)
A
29

Following your comment Nikhil. Use st-safe-src like so:

HTML

<table st-table="displayedCollection" st-safe-src="rowCollection">
      <thead>
        <tr>
          <th st-sort="firstName">First Name</th>
          <th st-sort="lastName">Last Name</th>
        </tr>
      </thead>
      <tbody>
        <tr ng-repeat="row in displayedCollection">
          <td>{{row.firstName}}</td>
          <td>{{row.lastName}}</td>
        </tr>
      </tbody>
</table>

JS

app.controller('Ctrl', function($scope, service) {
    $scope.displayedCollection = [];

    service.all.then(function(list) {
        $scope.rowCollection = list;
        $scope.displayedCollection = list;
    });
});

That's it.

Aegrotat answered 19/5, 2015 at 20:55 Comment(2)
This answer is helpful for me. Thank you !Mihe
Another common reason for non-sorting is described here and this one solved my problem of not beeing able to sort: https://mcmap.net/q/909904/-smart-table-angular-module-unable-to-sortCatholicize
Z
5

If you are bringing in data asynchronously (from a remote database, restful endpoint, ajax call, etc) you must use the stSafeSrc attribute. You must use a seperate collection for both the base and safe collections or you may end up with an infinite loop.

Since I am getting data from restful service st-table="displayedCollection" st-safe-src="rowCollection" solve my issue

Zehe answered 6/7, 2016 at 20:28 Comment(1)
Nice to have some explanation since the top answer lacks any!Spina
M
1

I think it is trying to sort on row.name in the way that you code it. Try the following to see if it works:

     st-sort="employee.name"
Multiparous answered 31/3, 2015 at 20:19 Comment(1)
Hey Kay.. Thanks for your suggestion. I tried that too but didn't seem to work. Apparently i believe as my data is loading asynchronously, i should have used st-safe-src attribute according to the smart-table doc hereNamedropping

© 2022 - 2024 — McMap. All rights reserved.