【问题标题】:Angular-JS table sorting not working when delimiter change from ng: to ng-当分隔符从 ng: 更改为 ng- 时,Angular-JS 表格排序不起作用
【发布时间】:2014-05-05 02:52:00
【问题描述】:

我创建了一个 Angular 应用程序,用于根据 ascii 值对 html 表进行排序。该应用程序运行良好,但问题是当我将分隔符 从 'ng:' 更改为 'ng-' 时,排序不起作用。如果这是由于其他原因造成的,请原谅我......因为我是 Angular 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>

【问题讨论】:

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


    【解决方案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/

    【讨论】:

    • 我不完全确定,我只是搜索了角度源,没有发现任何与 $orderBy 相关的内容。我确实知道建议的方法是使用 ng-repeat,因为我从未遇到过 ng:repeat 表示法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 1970-01-01
    • 2016-12-01
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多