大家好我正在尝试创建一个应用程序,在进行淘汰搜索时设置适当的标记。
基本上应用程序是。 当有人搜索下面的列表时,过滤列表并仅在地图上显示与过滤器列表关联的标记。 我创建了一个ko.utils.arrayFilter,我试图只设置item.marker.setVisible(true)
我的Github链接是https://github.com/Aimpotis/map3
再次感谢你,并且非常尊重社区,它正在帮助我学到很多东西
答案 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;
});
}
注意:除非您支持特别旧的浏览器,否则您可以使用Array filter method而不是Knockout的arrayFilter
util和.foreach
而不是arrayForEach
。