角度:在包含外部数据的ng重复上搜索过滤器
Angular: search filter on ng-repeat containing external data
建筑物有代码。示例:主厅的代码是"MNH"
房间的数字来自建筑物的代码。示例:"MNH-101"
在数据库中,代码附加到建筑物,而不是房间。房间只有建筑物的ID作为外键。
那么,我怎样才能创建一个表,其中包含写为[Building Code]-[Room Number]
的房间,同时仍然能够搜索房间的"完整"号码:"MNH-101"?
到目前为止,我有这个:
<form>
<input type="text" ng-model="searchRoom">
</form>
<table class="table table-striped table-bordered">
<tr ng-repeat="room in view.rooms|filter:searchRoom">
<td>
<a ng-href="room/{{room.id}}">
{{ view.building.code }}-{{ room.number }}
</a>
</td>
</tr>
</table>
合并的房间号显示正常,我可以搜索房间号,即"100",但我无法搜索"MNH"。
我对 angular 很陌生,所以我的问题主要是我不知道在这个上面谷歌搜索什么。理想情况下,我想保留单个搜索框,我还想将建筑代码和数字保留在同一列中。
需要自定义过滤器?
有什么帮助吗?
编辑:
所以,在控制器中,我只是遍历房间并输入建筑规范。
for (var i = rooms.length; i--;) {
rooms[i].number = vm.building.code + "-" + rooms[i].number;
}
不优雅?有没有更好的方法?
通常,最好尽可能避免使用筛选器,因为它们可以在每个摘要上运行,即使列表或筛选条件未更改也是如此。相反,每当筛选条件更改时,调用控制器函数以手动为要绑定到的视图创建新的筛选列表。这允许您使用您喜欢的任何逻辑。
然后,基本结构变为:
<form>
<input type="text" ng-model="searchRoom" ng-change="view.roomFilterChanged(searchRoom)">
</form>
<table class="table table-striped table-bordered">
<tr ng-repeat="room in view.filteredRooms track by room.id">
<td>
<a ng-href="room/{{room.id}}">
{{ view.building.code }}-{{ room.number }}
</a>
</td>
</tr>
</table>
在控制器中:
function RoomViewController() {
// (set this.rooms here)
this.filteredRooms = this.rooms;
}
RoomViewController.prototype.roomFilterChanged = function (filterText) {
this.filteredRooms = this.rooms.filter(function (room) {
// (filter criteria here)
});
};
确切的筛选条件已留给您作为练习。
请注意,我在ng-repeat
表达式中使用了track by
。这是一个很好的做法,因为它允许它重用集合中给定项的现有 DOM 节点(如果更改后仍在集合中),从而在集合更改时提高ng-repeat
的性能。在这种情况下,对于每个项目的唯一标识属性,.id
是一个不错的选择。
相关文章:
- 如何在较新版本的 Free-JQGard 中重置搜索工具栏和搜索过滤器
- Angular实现多搜索过滤器
- 如何在免费的jqGrid中获得onCellSelect中所选的搜索过滤器
- 如何忽略LDPA搜索过滤器中的多余空间
- 如何在搜索过滤器jQuerymobile中查找可见列表项的计数
- 使用KnockoutJS搜索过滤器
- jQuery/Datatables:在基本DataTable中包含许多不同的搜索过滤器类型和字段
- 在同一页面上的多个搜索框上动态应用 Jquery 中的搜索过滤器
- 角度:在包含外部数据的ng重复上搜索过滤器
- Angular.js,中的搜索过滤器
- PHP MySQL 和 AJAX 搜索过滤器延时
- AngularJS ngOptions 搜索过滤器 - 删除重复的选择选项
- Angular JS 搜索过滤器不会使用 Firebase 过滤数据
- 如何在 angularjs 中为特殊字符应用搜索过滤器
- AngularJS搜索过滤器在数组中进入对象
- 同位素搜索过滤器几乎想通了
- 搜索过滤器未重置 jquery 移动
- 弹性搜索搜索过滤器等于问题
- jQuery表在PHP生成的表上搜索过滤器
- 如何在键入时应用ajax/json搜索过滤器