无法通过使用Angular.js从表中键入名称的任何部分进行搜索

时间:2016-07-18 06:22:24

标签: javascript angularjs

我需要一个帮助。我无法使用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那么它应该过滤并显示在表格中。请帮助我。

1 个答案:

答案 0 :(得分:1)

正如评论中所述,解决方案是删除.substring(0, search.length部分,因为它只会占用您条目的第一个x(搜索字长度)字符,并在该部分内搜索您的搜索字词。

如果没有它,你可以在整个字符串中搜索输入的单词。

有关正常工作的演示,请参阅this fiddle