Ich habe einige Probleme beim Filtern eines verschachtelten Arrays mit Knockout.Nach Eigenschaften des verschachtelten Arrays filtern - Knockout
Ich möchte in der Lage sein, das Array nach "Tag-Namen" sowie "Name" zu filtern.
. Geben Sie 'whal' ein, und alle Objekte, die ein Tag mit diesem Namen enthalten, werden im Raster gefiltert.
Fiddle: https://jsfiddle.net/king_s/fj9L3wjz/3/
<input data-bind="value: searchQuery, valueUpdate: 'afterkeydown'" />
<div data-bind="foreach: filter" class="grid">
<p data-bind="text: name"></p>
</div>
(function(){
var ViewModel = function() {
var self = this;
var obj = { "id": 11,
"name": "mouse",
"tags": [{ "id": 1,
"name": "critter"
}]
};
var obj2 = { "id": 12,
"name": "dolphin",
"tags": [{ "id": 2,
"name": "fish"
},
{"id": 3,
"name": "whale"
}]
};
self.searchQuery = ko.observable("");
self.array = ko.observableArray([obj, obj2]);
self.filter = ko.computed(function() {
if(!self.searchQuery()) {
return self.array();
} else {
return ko.utils.arrayFilter(self.array(), function(obj) {
return obj.name.toLowerCase().indexOf(self.searchQuery().toLowerCase()) > -1;
});
}
});
};
ko.applyBindings(new ViewModel());
})();
Perfect thanks! – user3116167
@ Benutzer3116167 NP. Bitte upvote, wenn dir die Antwort gefallen hat. – giannisf