2013-07-09 1 views
9

ho la folliwng sul mio modello:utilizzando contiene invece di stringStartsWith knockout js

self.filteredItems = ko.computed(function() { 
      var filter = this.filter().toLowerCase(); 

      if (!filter) { 
       return this.sites(); 
      } else { 
       return ko.utils.arrayFilter(this.sites(), function (item) { 
        return ko.utils.stringStartsWith(item.Name().toLowerCase(), filter); 
       }); 
      } 

     }, self); 

Io lo uso per una ricerca sulla mia pagina, ma piuttosto che stringStartsWith mi piacerebbe una sorta di .contains invece così ho ottenere risultati dove il mio searchterm è contenuto in qualsiasi punto della stringa anziché solo all'inizio.

Immagino che questa sia una richiesta abbastanza comune ma non è riuscita a trovare nulla di ovvio.

Qualche suggerimento?

+0

possibile duplicato del [metodo come String.contains() in JavaScript] (http://stackoverflow.com/questions/1789945/method-like-string-contains-in-javascript), perché le risposte riguardano le funzioni String, più di Knockout o ASP.NET – FakeRainBrigand

risposta

14

È possibile utilizzare semplicemente il string.indexOf method per verificare la "stringa contiene":

self.filteredItems = ko.computed(function() { 
    var filter = this.filter().toLowerCase(); 

    if (!filter) { 
     return this.sites(); 
    } else { 
     return ko.utils.arrayFilter(this.sites(), function (item) { 
      return item.Name().toLowerCase().indexOf(filter) !== -1; 
     }); 
    } 

}, self);