搜索,使用knockout进行筛选

问题描述:

我在使用KO进行搜索时遇到问题。它与我的模板绑定,但现在与联系人,如何解决这个问题?搜索,使用knockout进行筛选

这是应用程序:http://jsfiddle.net/ovesyan19/uc8ubcy8/10/

<input data-bind="textInput: filter" class="search_input form-control input-lg" maxlength="18" placeholder="Search..."> 


<div class="cl_wrapper"> 
    <div class="contacts" data-bind="template: {name: 'contactTemplate', foreach: filteredContacts}"></div> 
</div> 



self.filter = ko.computed({ 
    read: function(data){ 
     if(!data || data == 'undefined') { 
      self.filteredContacts = self.contacts; 
     } 
    }, 
    write: function (data) { 
     var x = ko.utils.arrayFilter(self.contacts(), function (item) { 
      return item.conName().toLowerCase().indexOf(data.toLowerCase()) >= 0; 
     }); 
     self.filteredContacts(x); 
    } 
}); 

我已经找到了解决方案,但它仍然有一个问题。当我按键过滤工作正常,但是当我开始删除字母时,它不会显示我的联系人列表。我怎样才能解决这个问题?

+1

有人能帮忙吗? – ovesyan 2014-11-02 21:47:21

+0

旁注;我不认为任何人使用“dependentObservable”太 – Retsam 2014-11-04 02:32:10

+0

@Retsam你有任何想法更新的问题? – ovesyan 2014-11-09 13:00:23

也许你需要将你的dependentObservable重命名为'contacts'以外的东西,因为你已经有一个名字相同的observableArray了?

self.filteredContacts = ko.dependentObservable(function(){ 

,改变过程中的数据绑定...

foreach: filteredContacts 
+0

是的,它需要在js文件中更改,但在html中,如果我更改为“foreach:filt_cont”,它将不会应用绑定,因为它是我的模板。 – ovesyan 2014-11-02 11:14:29