使用knockout JS ko.utils.arrayFilter设置标记可见

时间:2017-07-31 17:35:57

标签: google-maps knockout.js

大家好我正在尝试创建一个应用程序,在进行淘汰搜索时设置适当的标记。

基本上应用程序是。 当有人搜索下面的列表时,过滤列表并仅在地图上显示与过滤器列表关联的标记。 我创建了一个ko.utils.arrayFilter,我试图只设置item.marker.setVisible(true)

我的Github链接是https://github.com/Aimpotis/map3

再次感谢你,并且非常尊重社区,它正在帮助我学到很多东西

1 个答案:

答案 0 :(得分:6)

您只需设置标记的可见性以匹配是否找到它:

if (!filter) {
  // this is new
  ko.utils.arrayForEach(self.listLoc(), function (item) {
    item.marker.setVisible(true);
  });
  return self.listLoc();
} else {
  return ko.utils.arrayFilter(self.listLoc(), function(item) {
    var result = (item.title.toLowerCase().search(filter) >= 0)
    item.marker.setVisible(result); // this is a new line
    return result;
  });
}

Working fiddle

注意:除非您支持特别旧的浏览器,否则您可以使用Array filter method而不是Knockout的arrayFilter util和.foreach而不是arrayForEach