我在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也正确更新.我显然错过了一些东西!
解决方法
我不认为你的想法是错误的.它工作正常这是工作
plunker.
你别在别的地方出错了.
app.js
var app = angular.module('ngApp',[]); app.controller('MainCtrl',['$scope',function ($scope) { 'use strict'; $scope.friends = [ {name: 'John',phone: '555-1276'},{name: 'Mary',phone: '800-BIG-MARY'},{name: 'Mike',phone: '555-4321'},{name: 'Adam',phone: '555-5678'},{name: 'Julie',phone: '555-8765'} ]; $scope.setorder = function (order) { $scope.order = order; }; }]);
主要html
<ul class="nav nav-pills"> <li ng-class="{'active': order=='name'}"><a href="#" ng-click="setorder('name')">name</a></li> <li ng-class="{'active': order=='phone'}"><a href="#" ng-click="setorder('phone')">phone</a></li> </ul> <ul> <li data-ng-repeat="friend in friends|orderBy:order"> <span class="name">{{friend.name}}</span> <span class="phone">{{friend.phone}}</span> </li> </ul>
原文地址:https://www.jb51.cc/js/154480.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。