这个问题让我感到沮丧了一段时间。
加载页面时,通过以下代码设置表的默认排序:
$scope.sort = {
field: 'date',
dir: 'asc'
};
通过用户点击表格标题来更改排序,如下所示:
<th ng-class="{'sort-desc': sorted('date', 'desc'), 'sort-asc': sorted('date', 'asc')}" class="sortable">
<a href="#" ng-click="setSort('date')">Date</a>
</th>
这里是setSort代码:
$scope.setSort = function(field) {
if ($scope.sort.field == field)
$scope.sort.dir = ($scope.sort.dir == 'desc') ? 'asc' : 'desc';
else
$scope.sort.field = field;
$scope.update();
};
并排序
$scope.sorted = function(field, dir) {
return ($scope.sort.field == field && $scope.sort.dir == dir);
};
在初始页面加载时,默认排序(date-asc)将应用于表中的数据,但不应用sort-asc。 更改排序列时,它将显示正常 - 它只是初始页面加载。
如何在页面加载时正确评估角度?
答案 0 :(得分:0)
经过多次探讨之后,我发现了问题:我已经定义了$scope.sort
两次,一次作为对象,一次作为函数。
出于某种原因,它通过更改排序重新定义$scope.sort.dir
和$scope.sort.field
后工作,但原始值被我的函数定义覆盖。
获得的经验教训 - 对变量名称要小心。