0
Knockout jsを使用して入れ子になったjson配列をフィルタリングしようとしています。 JSONの外観は次のとおりですKnockout JSを使用して入れ子になったjson配列の検索フィルタJS
{
"groups": [{
"name": "Category1",
"items": [{
"question": "Question1",
"answer": "Answer1"
}]
}, {
"name": "Category2",
"items": [{
"question": "Question2",
"answer": "Answer2"
}, {
"question": "Question3",
"answer": "Answer3"
}]
}]
}
「回答」に基づいてフィルタリングする必要があります。ここに私のHTMLページが今以下
<div >
<div class="groups" data-bind="{foreach: {data: filteredGroups, as: 'group'}}">
<div class="name-row" data-bind="text: group.name"></div>
<div class="items" data-bind="{foreach: {data: group.items, as: 'item'}}">
<div class="item-row">
<div class="question-row">
<div class="question-content">
<div class="letter">Question</div>
<div data-bind="text: item.question"></div>
</div>
<div class="notch"> </div>
</div>
<div class="answer-row">
<div class="letter">Answer</div>
<div data-bind="text: item.answer"></div>
</div>
</div>
</div>
</div>
をどのように見えるかであることは私の現在のロジックです:私は同じことを実行しようとしたとき
self.filteredGroups = ko.computed(function() {
if (!self.query()) {
return self.groups();
}
else {
var matchCount = 0;
return ko.utils.arrayFilter(self.groups(), function(group) {
return ko.utils.arrayFilter(group.items, function(item) {
//console.log("Entered==>" + self.query().toLowerCase() + " " + "Search==>" + item.question.toLowerCase());
var found = item.answer.toLowerCase().indexOf(self.query().toLowerCase());
if(found >= 0){
console.log("Number of occurrences" +matchCount++);
return true;
}else{
return false;
}
});
});
}
});
はしかし、私は結果をフィルタ処理されません。私が紛失しているものはありますか?
感謝を。出来た! –