Knockout.js 如何隐藏数据并仅在出现';什么是比赛?

Knockout.js 如何隐藏数据并仅在出现';什么是比赛?,knockout.js,data-binding,Knockout.js,Data Binding,对于Knockout来说是个新手,只是想展示一个仅用于演示目的的快速数据绑定示例。我想隐藏列表项中的文本,只显示匹配项 您需要确保仅当搜索词不是空字符串时,筛选器才会返回结果。通过检查search.length>0,并返回一个空数组(如果是),可以很容易地实现这一点 viewModel.beers = ko.dependentObservable(function() { var search = this.query().toLowerCase(); if(search &a

对于Knockout来说是个新手,只是想展示一个仅用于演示目的的快速数据绑定示例。我想隐藏列表项中的文本,只显示匹配项


您需要确保仅当搜索词不是空字符串时,筛选器才会返回结果。通过检查
search.length>0
,并返回一个空数组(如果是),可以很容易地实现这一点

viewModel.beers = ko.dependentObservable(function() {
    var search = this.query().toLowerCase();
    if(search && search.length > 0) {
      return ko.utils.arrayFilter(beers, function(beer) {
          return beer.name.toLowerCase().indexOf(search) >= 0;
      });
    } else {
        return [];
    }
}, viewModel);

以下是更新后的提琴:

您的意思是在搜索框为空时隐藏其他项目吗?比如说?淘汰赛1x真的很老了。@NisargShah没错!谢谢我知道KO 1已经过时了。(同样,这只是一个快速演示,不是生产代码。)
viewModel.beers = ko.dependentObservable(function() {
    var search = this.query().toLowerCase();
    if(search && search.length > 0) {
      return ko.utils.arrayFilter(beers, function(beer) {
          return beer.name.toLowerCase().indexOf(search) >= 0;
      });
    } else {
        return [];
    }
}, viewModel);