Knockout过滤器在UI中显示错误的数据但在Console.Log中显示正确的数据

时间:2014-02-03 17:28:27

标签: javascript arrays knockout.js

我有一个由Knockout.JS计算函数计算的表。如果它们在过滤器中没有文本,我返回原始的可观察数组,当它们是过滤器时,我返回一个过滤后的数组。我的问题是,在我的UI中,表格一次正确过滤,但之后它会使过滤器的结果加倍,当数组中没有结果时,它会显示原始的结果集。但是,在我的console.log中,我可以看到需要显示的正确数组。例如:如果我按城市海搜索,第一组结果将只有西雅图的结果。但在那之后,如果我搜索Z,那么唯一的结果是不应该显示的西雅图结果,但在我的console.log中我看到[]。如果我搜索Sea,它会使西雅图的结果翻倍。

我也在使用tablesorter插件,我认为这可能是问题的一部分。

HTML:

<input data-bind="value: CityFilter, valueUpdate: 'afterkeydown'" />

<tbody data-bind="foreach: FilteredResults">

淘汰赛:

self.Users = ko.observableArray();
self.CityFilter = ko.observable();


self.FilteredResults = ko.computed(function () {

    var DesiredCity = self.CityFilter();

   //If no filter, return original array

    if (!CityResults) 

        return self.Users();
    }
    else {


   //Log Results To See In Console           

        console.log(ko.utils.arrayFilter(self.Users(), function (filter) {
            return (filter.City().indexOf(DesiredCity) !== -1);
        }));



    //Return Results To View Model

        return(ko.utils.arrayFilter(self.Users(), function (filter) {
            return (filter.City().indexOf(DesiredCity) !== -1);
        }));

    }


}, self);

0 个答案:

没有答案