2016-08-30 6 views
0

Wie konfigurieren Sie md-autocomplete so, dass wenn Sie nach einem Wort suchen, es nach Zeichenfolgen innerhalb von Strings sucht. Im Moment findet es nur das erste Wort. Wie bei der Demo https://material.angularjs.org/latest/demo/autocomplete, wenn Sie neue eingeben, findet es New Jersey. Aber wenn Sie Jersey eingeben, findet es nichts.AngularJS md-autocomplete Suche nach einem String innerhalb eines Strings

Dies ist meine querySearch Funktion

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

Dies ist meine createFilterFor Funktion

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

können Sie einen regulären Ausdruck verwenden, um ein Spiel-Modus für diese Art der Suche zu machen –

Antwort

0

ich es auf diese Weise gelöst. Beachten Sie, dass es ein Array mit Tags und Arrays gibt, die nicht zur Anzeige verwendet werden.

  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); 
       } 
      } 
     }; 
    } 
Verwandte Themen