Ich habe den folgenden Code in einer App mit Knockout.js, aber etwas bekam meine Aufmerksamkeit mit der folgenden Funktion:seltsame Verhalten in Knockout.js Rechenfunktion
this.filterLocations = ko.computed(function() {
return ko.utils.arrayFilter(self.locations(), function (loc) {
if(self.textFilter() != undefined){
self.hideMarkers();
return loc.title.toLowerCase().includes(self.textFilter().toLowerCase());
}else{
return true;
}
});
}, this);
Ich mag die self.hideMarkers()
in der anrufen aber sonst Anweisung, wenn ich es in der else-Anweisung ich folgende Fehlermeldung bekam:
Uncaught TypeError: self.hideMarkers is not a function
ich kann nicht herausfinden, warum dies geschieht, weil der gleiche Anruf in dem if-Anweisung hat keine Fehler und Arbeit fein.
Der Funktionscode ist:
this.hideMarkers = function() {
for (var i = 0; i < self.markers.length; i++) {
var isIn = true;
for (var y = 0; y < self.filterLocations().length; y++) {
var el = self.filterLocations()[y];
if(el.id !== i + 1){
isIn = false;
}else{
isIn = true;
break;
}
}
if(isIn){
self.markers[i].setMap(map);
}else{
self.markers[i].setMap(null);
}
}
};
Jede Idee dazu?
Nicht sicher, was das eigentliche Problem ist, aber es sieht für mich aus wie Sie alle Arten von Dingen tun * innerhalb * Ihrer Filtermethode, die außerhalb passieren sollte ... – user3297291
Ja, weil in diesem Fall habe ich eine Liste von Elemente gezeigt und auch eine Liste von Markern, so dass die Filterfunktion einen booleschen Wert zurückgeben muss, um die Liste zu filtern, aber auch die Methode aufrufen, um die Marker in der Map zu filtern –