ng-class在初始页面加载时不正确

时间:2015-09-10 22:31:37

标签: angularjs angular-ng-class

这个问题让我感到沮丧了一段时间。

加载页面时,通过以下代码设置表的默认排序:

$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。 更改排序列时,它将显示正常 - 它只是初始页面加载。

如何在页面加载时正确评估角度?

1 个答案:

答案 0 :(得分:0)

经过多次探讨之后,我发现了问题:我已经定义了$scope.sort两次,一次作为对象,一次作为函数。

出于某种原因,它通过更改排序重新定义$scope.sort.dir$scope.sort.field后工作,但原始值被我的函数定义覆盖。

获得的经验教训 - 对变量名称要小心。