使用选择输入排序表
Sort table with select input
我有以下结构:
$scope.friends = [
{ name:'John', phone:'555-1212', age:10 },
{ name:'Mary', phone:'555-9876', age:19 },
{ name:'Mike', phone:'555-4321', age:21 },
{ name:'Adam', phone:'555-5678', age:35 },
{ name:'Julie', phone:'555-8765', age:29 }
];
我想按姓名,电话或年龄排序使用select input,像这样:
<select class="sortBy" ng-model="sort" ng-change="order(predicate)">
<option value="name" ng-click="order('name')" ng-selected="predicate === 'name'">Name</option>
<option value="phone" na-click="order('phone')" ng-selected="predicate === 'phone'">Phone</option>
<option value="age" ng-click="order('age')" ng-selected="predicate === 'age'">Age</option>
</select>
这就是我想出来的。命令功能:
$scope.order = function(predicate) {
alert(predicate);
$scope.reverse = ($scope.predicate === predicate) ? !$scope.reverse : false;
scope.predicate = predicate;
};
但是它创建了另一个选项,空的。当我改变选择时,值设置不正确。我该怎么做呢?
我建议您将排序ng-model
直接应用于orderBy
过滤器,不需要为创建排序函数创建自定义函数&呼叫ng-click
另一个建议是将选择选项转换为ng-options
,这将是更合适的方式。
标记
<select class="sortBy" ng-options="prop for prop in props" ng-model="sort"></select>
<table class="friend">
<tr>
<th>Name</th>
<th>Phone Number</th>
<th>Age</th>
</tr>
<tr ng-repeat="friend in friends | orderBy:sort">
<td>{{friend.name}}</td>
<td>{{friend.phone}}</td>
<td>{{friend.age}}</td>
</tr>
</table>
控制器$scope.props = ["name","phone","age"]
工作Plunkr 相关文章:
- 根据输入文本按元素排序,AngularJS
- 按字母顺序对输入单选框进行排序
- 用于提示输入和输出的JavaScript按字母顺序排序
- 这两种数组排序算法是否会为任何输入产生不同的输出
- Javascript UK 使用三个输入字段进行排序代码验证
- jQuery 可排序 - 根据输入字段的值排序
- 在 jQuery 中使用输入框对动态表进行排序
- 输入在 ng 可排序容器中不可编辑
- 按嵌套的隐藏输入值对
- 元素进行排序
- 对具有多词输入的 HTML 元素进行排序
- 按隐藏输入对表进行排序
- 按输入值对Tablesorter列进行排序
- Javascript自定义排序功能取决于用户输入
- My.sort()只对输入框中的添加值进行排序?为什么会这样
- jQuery排序输入
- 将输入字段中的所有值放入一个数组中并对其进行排序
- 按字母顺序对输入/复选框元素进行排序
- I'm试图制作一个带有可排序jquery函数的add-remove输入框来对动态创建的输入框进行排序
- 如何按用户输入的日期对表进行排序
- 使用两个文本区域(一个输入和一个输出)和JavaScript创建一个字母排序器