【发布时间】:2012-12-23 15:02:29
【问题描述】:
我在使用 AngularJS 中的 orderBy 过滤器时遇到问题。这是我的设置:
<li ng-repeat="item in listItems.data | orderBy:order">
<a ng-click="getRelated(item._id)">{{ item.title }}</a>
</li>
部分控制器:
$scope.order = 'year';
$scope.listItems = $http.post($scope.url, {'filterType': 'abc', 'letter': $scope.params.letter});
$scope.setOrder = function(order) {
$scope.order = order;
}
最后是我想用来排序数据的“开关”
<span class="sort--title">Sort by</span>
<a ng-class="{true:'selected', false:''}[order=='title']" href="" ng-click="setOrder('title')" class="sort--attribute">Title</a>
<a ng-class="{true:'selected', false:''}[order=='year']" href="" ng-click="setOrder('year')" class="sort--attribute">Year</a>
<a ng-class="{true:'selected', false:''}[order=='length']" href="" ng-click="setOrder('length')" class="sort--attribute">Length</a>
<a ng-class="{true:'selected', false:''}[order=='date_added']" href="" ng-click="setOrder('date_added')" class="sort--attribute">Date Added</a>
当我点击按钮时,列表没有被重新排序。
当我手动更改初始 $scope.order 值时,列表按属性排序。 ng-class 也已正确更新。我显然错过了什么!
【问题讨论】:
-
你能用 jsFiddle 解决你的问题吗?我看不到你的 post 函数返回的数据是什么样的。
-
我不太确定在这种情况下数据是否相关。我的问题基本上是,如何使
ng-repeat数据在 orderBy 参数更改时强制重新加载。还是这与数据有某种关系? -
对我来说似乎是对的。我认为你应该尝试设置一个 jsFiddle。我想也许其他一些事情出了问题。
标签: javascript angularjs