我需要一个帮助。我无法使用Angular.js在搜索字段中键入名称的任何部分来过滤表中的数据。我在下面解释我的代码。
<input class="form-control" placeholder="Type Restaurant Name" name="q" type="text" ng-model="letter">
<tr>
<th>Sl. No</th>
<th>Restaurant Name</th>
</tr>
<tr dir-paginate="cus in ($parent.labelResults=(listOfCustomerData | startsWithLetter:letter | orderBy:'rest_name')) | itemsPerPage:5 track by $index" current-page="currentPage">
<td>{{itemsPerPage *(currentPage-1)+$index+1}}</td>
<td>{{cus.rest_name}}</td>
</tr>
这里我通过在输入字段中输入名称来过滤restaurant name
。我的控制器端代码如下所示。
customerView.filter('startsWithLetter', function () {
return function (items, search) {
//console.log('items',items);
if(items != undefined){
if (!search) {
return items;
}
search = search.toLowerCase();
return items.filter(function(element) {
return element.rest_name.toLowerCase().substring(0, search.length).indexOf(search) != -1;
});
}
};
});
在这里,我需要假设我有一个餐馆名称the Joyce on 4th Irish pub
。现在,如果我从餐馆的开头键入每个字母,然后从表中过滤。但在这里,我需要假设我正在键入任何部分这个名字就像Joyce
那么它应该过滤并显示在表格中。请帮助我。
答案 0 :(得分:1)
正如评论中所述,解决方案是删除.substring(0, search.length
部分,因为它只会占用您条目的第一个x(搜索字长度)字符,并在该部分内搜索您的搜索字词。
如果没有它,你可以在整个字符串中搜索输入的单词。
有关正常工作的演示,请参阅this fiddle。