使用knockoutjs搜索,过滤

时间:2014-11-02 10:52:35

标签: javascript html5 knockout.js

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

这是应用: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 个答案:

答案 0 :(得分:0)

也许您需要将dependentObservable重命名为“contacts”之外的其他内容,因为您已经拥有一个同名的observableArray?

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

当然也改变数据绑定......

foreach: filteredContacts