-->

Smart-Table “st-sort” not working

2019-03-18 16:28发布

问题:

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

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

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

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

回答1:

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.



回答2:

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



回答3:

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"