我有一个由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);