在ng-repeat中忽略AngularJS orderBy函数

时间:2012-12-05 17:26:17

标签: angularjs

orderBy函数被完全忽略。我在一个点上添加了一个console.log进行测试,甚至没有调用该函数。数据仍然显示但无序。

HTML代码

<div id="tabs">
    <a ng-repeat="tab in tabs | orderBy:tabordinal" id="tab-{{tab.tab_id}}" class="{{getClasses(tab)}}" ng-click="tabclick(tab)">{{tab.label}}</a>
</div>

JS功能

$scope.tabordinal = function (tab) {
    return $scope.taborder.indexOf(tab.tab_id);
};

其他所有内容都已正确设置(即ng-click工作正常,数据绑定正确,过滤器正在处理其他元素。

1 个答案:

答案 0 :(得分:4)

一些事情......

  1. orderBy接受一个字符串或一个返回字符串的表达式。该字符串应该是您要在订购的对象列表中排序的属性的名称。因此,如果数组中的对象具有[ { 0: 'foo', 1: 'bar', '2': 'blah' } ]之类的属性,那么我猜你会很高兴。但我怀疑它们的结构是那样的。
  2. orderBy:tabOrdinal()如果您的表达式是一个函数,因为您的表达式位于原始帖子中,则需要()
  3. 除此之外,如果你提供一个小提琴,我可以给你更多的帮助。