|
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