1

ascii 値に基づいて html テーブルをソートする角度アプリケーションを作成しました。アプリケーションは正常に動作しますが、区切り文字を 'ng:' から 'ng-'に変更すると、並べ替えが機能しません。これの原因が別の理由である場合は、ご容赦ください...角度のあるjsが初めてなので

誰でもこれに対する解決策を教えてください

「ng-」区切り文字を使用したAngularコードWorking Demo)-ソートが機能しない

<div ng-controller="Main" ng-app="myApp">
<table border="1">
  <tr>
    <th><a href ng-click="sortBy('name')">Name</a></th>
    <th><a href ng-click="sortBy('phone')">Phone Number</a></th>
    <th><a href ng-click="sortBy('age')">Age</a></th>
    <th><a href ng-click="sortBy('date')">Date</a></th>
  </tr>
  <tr ng-repeat="friend in friends|orderBy:sort:reverse">
    <td>{{friend.name}}</td>
    <td>{{friend.phone}}</td>
    <td>{{friend.age}}</td>
    <td>{{friend.date}}</td>
  </tr>
</table>
</div>
4

1 に答える 1

1

問題は、述語と逆をどのように定義して使用するかです。

この関数内で「this」を使用している場合、それらはこの関数のスコープ内でのみ定義され、その外側ではアクセスできません。

$scope.sortBy = function (field) {
    if (this.predicate != field) {
        this.predicate = field;
        this.reverse = false;
    } else {
        this.reverse = !this.reverse;
    }
};

スコープでローカルの述語変数と逆方向のプロパティを使用するように更新したので、マークアップで使用できます。

var predicate;
$scope.reverse = false;

$scope.sortBy = function (field) {
    if (predicate != field) {
        predicate = field;
        $scope.reverse = false;
    } else {
        $scope.reverse = !$scope.reverse;
    }
};

更新されたフィドル: http://jsfiddle.net/rvdww/77/

于 2014-03-26T18:48:35.750 に答える