2013-07-09 29 views
9

Tôi có folliwng trên mô hình của tôi:sử dụng chứa thay vì stringStartsWith loại trực tiếp 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); 

tôi sử dụng nó cho một tìm kiếm trên trang của mình nhưng thay vì stringStartsWith Tôi muốn một số loại Chứa thay vì vậy tôi nhận được kết quả trong đó searchterm của tôi được chứa bất cứ nơi nào trong chuỗi thay vì chỉ ở đầu.

Tôi tưởng tượng điều này phải là một yêu cầu khá phổ biến nhưng không thể tìm thấy bất cứ điều gì hiển nhiên.

Bất kỳ đề xuất nào?

+0

thể trùng lặp của [Phương pháp như String.contains() trong JavaScript] (http://stackoverflow.com/questions/1789945/method-like-string-contains-in-javascript), vì câu trả lời là về các hàm String, nhiều hơn Knockout hoặc ASP.NET – FakeRainBrigand

Trả lời

14

Bạn có thể sử dụng chỉ đơn giản là string.indexOf method để kiểm tra các "chuỗi chứa":

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); 
Các vấn đề liên quan