2017-07-31 61 views
2

你好傢伙我試圖創建一個應用程序,設置適當的標記可見時,淘汰賽搜索正在完成。設置標記可見與淘汰賽JS ko.utils.arrayFilter

基本上應用程序是。 當有人搜索下面的列表時,過濾列表並僅使與地圖上可見的過濾器列表關聯的標記。 我創建了一個ko.utils.arrayFilter,我想只設置item.marker.setVisible(真)

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

再次感謝您和許多對於社會是幫助我學到了很多

回答

4

所有你需要的是設置標誌的可視性,以匹配其是否發現:

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,而不是淘汰賽的arrayFilter UTIL,並.foreach而不是arrayForEach

+0

我沒有語言來感謝你的男人,你無法想象你對此有多幫助。尊重你和所有幫助過的人。 – Morpheus

+0

只有一個問題,如果我做了一個過濾器,然後刪除它,然後它不重置標記,使它們都可見。 – Morpheus

+0

對。在分支中設置可見性,也會返回整個列表。更新答案和小提琴。 –