|
42 | 42 | * `reverse` is not set, which means it defaults to `false`. |
43 | 43 | <example module="orderByExample"> |
44 | 44 | <file name="index.html"> |
45 | | - <script> |
46 | | - angular.module('orderByExample', []) |
47 | | - .controller('ExampleController', ['$scope', function($scope) { |
48 | | - $scope.friends = |
49 | | - [{name:'John', phone:'555-1212', age:10}, |
50 | | - {name:'Mary', phone:'555-9876', age:19}, |
51 | | - {name:'Mike', phone:'555-4321', age:21}, |
52 | | - {name:'Adam', phone:'555-5678', age:35}, |
53 | | - {name:'Julie', phone:'555-8765', age:29}]; |
54 | | - }]); |
55 | | - </script> |
56 | 45 | <div ng-controller="ExampleController"> |
57 | 46 | <table class="friend"> |
58 | 47 | <tr> |
|
68 | 57 | </table> |
69 | 58 | </div> |
70 | 59 | </file> |
| 60 | + <file name="script.js"> |
| 61 | + angular.module('orderByExample', []) |
| 62 | + .controller('ExampleController', ['$scope', function($scope) { |
| 63 | + $scope.friends = |
| 64 | + [{name:'John', phone:'555-1212', age:10}, |
| 65 | + {name:'Mary', phone:'555-9876', age:19}, |
| 66 | + {name:'Mike', phone:'555-4321', age:21}, |
| 67 | + {name:'Adam', phone:'555-5678', age:35}, |
| 68 | + {name:'Julie', phone:'555-8765', age:29}]; |
| 69 | + }]); |
| 70 | + </file> |
71 | 71 | </example> |
72 | 72 | * |
73 | 73 | * The predicate and reverse parameters can be controlled dynamically through scope properties, |
74 | 74 | * as shown in the next example. |
75 | 75 | * @example |
76 | 76 | <example module="orderByExample"> |
77 | 77 | <file name="index.html"> |
78 | | - <script> |
79 | | - angular.module('orderByExample', []) |
80 | | - .controller('ExampleController', ['$scope', function($scope) { |
81 | | - $scope.friends = |
82 | | - [{name:'John', phone:'555-1212', age:10}, |
83 | | - {name:'Mary', phone:'555-9876', age:19}, |
84 | | - {name:'Mike', phone:'555-4321', age:21}, |
85 | | - {name:'Adam', phone:'555-5678', age:35}, |
86 | | - {name:'Julie', phone:'555-8765', age:29}]; |
87 | | - $scope.predicate = 'age'; |
88 | | - $scope.reverse = true; |
89 | | - $scope.order = function(predicate) { |
90 | | - $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; |
91 | | - $scope.predicate = predicate; |
92 | | - }; |
93 | | - }]); |
94 | | - </script> |
95 | | - <style type="text/css"> |
96 | | - .sortorder:after { |
97 | | - content: '\25b2'; |
98 | | - } |
99 | | - .sortorder.reverse:after { |
100 | | - content: '\25bc'; |
101 | | - } |
102 | | - </style> |
103 | 78 | <div ng-controller="ExampleController"> |
104 | 79 | <pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre> |
105 | 80 | <hr/> |
106 | | - [ <a href="" ng-click="predicate=''">unsorted</a> ] |
| 81 | + <button ng-click="predicate=''">Set to unsorted</button> |
107 | 82 | <table class="friend"> |
108 | 83 | <tr> |
109 | | - <th> |
110 | | - <a href="" ng-click="order('name')">Name</a> |
111 | | - <span class="sortorder" ng-show="predicate === 'name'" ng-class="{reverse:reverse}"></span> |
112 | | - </th> |
113 | | - <th> |
114 | | - <a href="" ng-click="order('phone')">Phone Number</a> |
115 | | - <span class="sortorder" ng-show="predicate === 'phone'" ng-class="{reverse:reverse}"></span> |
116 | | - </th> |
117 | | - <th> |
118 | | - <a href="" ng-click="order('age')">Age</a> |
119 | | - <span class="sortorder" ng-show="predicate === 'age'" ng-class="{reverse:reverse}"></span> |
120 | | - </th> |
| 84 | + <th> |
| 85 | + <button ng-click="order('name')">Name</button> |
| 86 | + <span class="sortorder" ng-show="predicate === 'name'" ng-class="{reverse:reverse}"></span> |
| 87 | + </th> |
| 88 | + <th> |
| 89 | + <button ng-click="order('phone')">Phone Number</button> |
| 90 | + <span class="sortorder" ng-show="predicate === 'phone'" ng-class="{reverse:reverse}"></span> |
| 91 | + </th> |
| 92 | + <th> |
| 93 | + <button ng-click="order('age')">Age</button> |
| 94 | + <span class="sortorder" ng-show="predicate === 'age'" ng-class="{reverse:reverse}"></span> |
| 95 | + </th> |
121 | 96 | </tr> |
122 | 97 | <tr ng-repeat="friend in friends | orderBy:predicate:reverse"> |
123 | 98 | <td>{{friend.name}}</td> |
|
127 | 102 | </table> |
128 | 103 | </div> |
129 | 104 | </file> |
| 105 | + <file name="script.js"> |
| 106 | + angular.module('orderByExample', []) |
| 107 | + .controller('ExampleController', ['$scope', function($scope) { |
| 108 | + $scope.friends = |
| 109 | + [{name:'John', phone:'555-1212', age:10}, |
| 110 | + {name:'Mary', phone:'555-9876', age:19}, |
| 111 | + {name:'Mike', phone:'555-4321', age:21}, |
| 112 | + {name:'Adam', phone:'555-5678', age:35}, |
| 113 | + {name:'Julie', phone:'555-8765', age:29}]; |
| 114 | + $scope.predicate = 'age'; |
| 115 | + $scope.reverse = true; |
| 116 | + $scope.order = function(predicate) { |
| 117 | + $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; |
| 118 | + $scope.predicate = predicate; |
| 119 | + }; |
| 120 | + }]); |
| 121 | + </file> |
| 122 | + <file name="style.css"> |
| 123 | + .sortorder:after { |
| 124 | + content: '\25b2'; |
| 125 | + } |
| 126 | + .sortorder.reverse:after { |
| 127 | + content: '\25bc'; |
| 128 | + } |
| 129 | + </file> |
130 | 130 | </example> |
131 | 131 | * |
132 | 132 | * It's also possible to call the orderBy filter manually, by injecting `$filter`, retrieving the |
|
138 | 138 | * @example |
139 | 139 | <example module="orderByExample"> |
140 | 140 | <file name="index.html"> |
141 | | - <div ng-controller="ExampleController"> |
142 | | - <table class="friend"> |
143 | | - <tr> |
144 | | - <th><a href="" ng-click="reverse=false;order('name', false)">Name</a> |
145 | | - (<a href="" ng-click="order('-name',false)">^</a>)</th> |
146 | | - <th><a href="" ng-click="reverse=!reverse;order('phone', reverse)">Phone Number</a></th> |
147 | | - <th><a href="" ng-click="reverse=!reverse;order('age',reverse)">Age</a></th> |
148 | | - </tr> |
149 | | - <tr ng-repeat="friend in friends"> |
150 | | - <td>{{friend.name}}</td> |
151 | | - <td>{{friend.phone}}</td> |
152 | | - <td>{{friend.age}}</td> |
153 | | - </tr> |
154 | | - </table> |
155 | | - </div> |
| 141 | + <div ng-controller="ExampleController"> |
| 142 | + <pre>Sorting predicate = {{predicate}}; reverse = {{reverse}}</pre> |
| 143 | + <table class="friend"> |
| 144 | + <tr> |
| 145 | + <th> |
| 146 | + <button ng-click="order('name')">Name</button> |
| 147 | + <span class="sortorder" ng-show="predicate === 'name'" ng-class="{reverse:reverse}"></span> |
| 148 | + </th> |
| 149 | + <th> |
| 150 | + <button ng-click="order('phone')">Phone Number</button> |
| 151 | + <span class="sortorder" ng-show="predicate === 'phone'" ng-class="{reverse:reverse}"></span> |
| 152 | + </th> |
| 153 | + <th> |
| 154 | + <button ng-click="order('age')">Age</button> |
| 155 | + <span class="sortorder" ng-show="predicate === 'age'" ng-class="{reverse:reverse}"></span> |
| 156 | + </th> |
| 157 | + </tr> |
| 158 | + <tr ng-repeat="friend in friends"> |
| 159 | + <td>{{friend.name}}</td> |
| 160 | + <td>{{friend.phone}}</td> |
| 161 | + <td>{{friend.age}}</td> |
| 162 | + </tr> |
| 163 | + </table> |
| 164 | + </div> |
156 | 165 | </file> |
157 | 166 |
|
158 | 167 | <file name="script.js"> |
|
166 | 175 | { name: 'Adam', phone: '555-5678', age: 35 }, |
167 | 176 | { name: 'Julie', phone: '555-8765', age: 29 } |
168 | 177 | ]; |
169 | | - $scope.order = function(predicate, reverse) { |
170 | | - $scope.friends = orderBy($scope.friends, predicate, reverse); |
| 178 | + $scope.order = function(predicate) { |
| 179 | + $scope.predicate = predicate; |
| 180 | + $scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false; |
| 181 | + $scope.friends = orderBy($scope.friends, predicate, $scope.reverse); |
171 | 182 | }; |
172 | | - $scope.order('-age',false); |
| 183 | + $scope.order('age', true); |
173 | 184 | }]); |
174 | 185 | </file> |
| 186 | +
|
| 187 | + <file name="style.css"> |
| 188 | + .sortorder:after { |
| 189 | + content: '\25b2'; |
| 190 | + } |
| 191 | + .sortorder.reverse:after { |
| 192 | + content: '\25bc'; |
| 193 | + } |
| 194 | + </file> |
175 | 195 | </example> |
176 | 196 | */ |
177 | 197 | orderByFilter.$inject = ['$parse']; |
|
0 commit comments