2016-08-30 58 views
0

如何配置md-autocomplete以便在搜索字词时搜索字符串中的字符串。目前它只找到第一个词。 与演示https://material.angularjs.org/latest/demo/autocomplete一样,如果您输入新的,它会发现新泽西州。但如果你输入球衣,它什么也找不到。AngularJS md-autocomplete搜索字符串中的字符串

这是我querySearch功能

function querySearch(query) { 
    var results = query ? vm.subjects.filter(createFilterFor(query)) : vm.subjects, 
     deferred; 
    return results; 
} 

这是我createFilterFor功能

function createFilterFor(query) { 
    var lowercaseQuery = angular.lowercase(query); 
    return function filterFn(subject) { 
     return (subject.Display.indexOf(lowercaseQuery) === 0); 
    }; 
} 
+0

你可以使用正则表达式来进行匹配模式,该类型的搜索 –

回答

0

我解决了这种方式。请注意,有一个包含标签和和数组而不用于显示的数组。

  function querySearch(query) { 

      var results = new Array(); 

      for (var i = 0, len = taggedSubjectArrray.length; i < len; i++) { 
       var txtToCompare = taggedSubjectArrray[i].Display; 

       if (txtToCompare.indexOf(query) != -1) 
       { 
        // string was found 
        // Add to results 
        results.push(validationArrray[i]); 
       } 
      } 

      return results; 
     } 
0
//This worked for me 

function createFilterFor(query) { 
     debugger; 
     //var lowercaseQuery = angular.lowercase(query); 

     return function filterFn(product) { 
      var results = new Array(); 

      var lowercaseQuery = angular.lowercase(query); 

      index = 0, 
      res = []; 
      res.push(-1); 

      //Get starting index of each word in string & push in array 
      while ((index = product.value.indexOf(' ', index + 1)) >= 0) { 
       res.push(index); 
      } 

      for (var i = 0; i < res.length; i++) { 
       var a = res[i] + 1; 

       if (product.value.indexOf(lowercaseQuery) === a) 
       { 
        return (product.value.indexOf(lowercaseQuery) === a); 
       } 
      } 
     }; 
    }