当分隔符从ng:更改为ng-时,Angular-JS表排序不起作用

时间:2014-03-26 15:18:55

标签: javascript angularjs sorting html-table angularjs-orderby

我已经创建了一个角度应用程序,用于根据ascii值对html表进行排序。该应用程序工作正常,但问题是当我更改分隔符来自' ng:'排序无法正常工作 - ' 。如果原因是出于其他原因,请原谅我...因为我刚接触到角js

任何人都可以告诉我一些解决方案吗

带有' ng的角度代码 - '分隔符 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>

1 个答案:

答案 0 :(得分: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/