2013-07-09 10 views
9

mam folliwng na moim modeluużyciem zawiera zamiast stringStartsWith nokaut 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); 

Używam go do poszukiwania na mojej stronie, ale zamiast stringStartsWith Chciałbym jakąś .contains zamiast więc uzyskiwać wyniki tam, gdzie moja wyszukiwarka jest zawarta w dowolnym miejscu ciągu, a nie tylko na początku.

Wyobrażam sobie, że to dość powszechna prośba, ale nie można znaleźć niczego oczywistego.

Jakieś sugestie?

+0

możliwe duplikat [Method jak String.contains() w JavaScript] (http://stackoverflow.com/questions/1789945/method-like-string-contains-in-javascript), ponieważ odpowiedzi dotyczą funkcji String, więcej niż Knockout lub ASP.NET – FakeRainBrigand

Odpowiedz

14

można użyć po prostu string.indexOf method aby sprawdzić "zawiera ciąg":

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); 
Powiązane problemy