Ng-tableを使用してアプリケーションを作成しましたが、ng-tableを使用してテーブルを生成したアプリケーションは正常に動作しています。私が直面している問題は、テーブルの並べ替えが機能していないことです。私のコードは以下の通りです
html
<table ng-table="tableParams" class="table">
<tr ng-repeat="user in myValues">
<td data-title="'Name'" sortable="'name'">
{{user.name}}
</td>
<td data-title="'Age'" sortable="'age'">
{{user.age}}
</td>
</tr>
</table>
スクリプト
var app = angular.module('main', ['ngTable']).
controller('DemoCtrl', function($scope, $filter, ngTableParams) {
$scope.myValues = [{name: "Moroni", age: 50},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 27},
{name: "Nephi", age: 29},
{name: "Enos", age: 34}];
$scope.tableParams = new ngTableParams({
sorting: {
name: 'asc'
}
}, {
getData: function($defer, params) {
$defer.resolve($filter('orderBy')($scope.myValues, params.orderBy()));
}
});
});
$defer.resolve($filter('orderBy')($scope.myValues, params.orderBy()));
ソートされた新しい配列を作成しますが、$scope.myValues
は変更しません。
したがって、どちらの場合も、毎回$scope.myValues
をソートされた配列に設定します。
$scope.myValues = $filter('orderBy')($scope.myValues, params.orderBy());
$defer.resolve($scope.myValues);
または、myValues
の代わりに$data
でng-repeat
を使用します。
<tr ng-repeat="user in $data">
_$scope.myValues
_に書き込み、それを_ng-repeat
_ディレクティブで使用していますが、データはテーブルparamsオブジェクトのgetData()
でのみ並べ替えています。
getData()
は_$scope.myValues
_を変更せず、ソートされた配列を返すためにのみ使用します。あなたが本当にやりたいことは:
_var data = [{name: "Moroni", age: 50}, ...]
_
$defer.resolve($filter('orderBy')(data, params.orderBy()));
$data
_を使用します。これは、getData()
にアクセスするためです。_<tr ng-repeat="user in $data">
_