私は観測可能な配列を持っています。いくつかのテキストに応じてオブザーバブルをフィルタリングしたい。オプション ボタンを選択します。それに応じて、監視可能な配列をフィルタリングし、テーブルにバインドする必要があります。これが今までの私のコードです。これが私の見解です
<table>
<tbody data-bind="foreach: dataOne">
<tr >
<td data-bind="text: id"></td><td > </td>
<td data-bind="text: display"></td><td > </td>
<td> </td>
</tr>
</tbody>
<table >
<tr>
<td><input name="optbtn" type="radio" value="All"/> All</td>
<td><input name="optbtn" type="radio" value="Selected"/> Selected</td>
</tr>
</table>
これが私のビューモデルです
var data1 = [{
name1: "one",
id: 1,
display: "<temp>Is this employee</temp> required <val>in our company</val>"
}, {
name1: "two",
id: 2,
display: "<temp>Is this bachelor</temp>required in our group"
}, {
name1: "three",
id: 3,
display: "Test"
}];
var viewModel = {
dataOne: ko.observableArray(data1),
};
$("input[name='optbtn']").change(function (e) {
debugger;
var str = "<temp>";
var stringFromArray = "";
if ($(this).val() == "All") {
alert("All");
}
else {
ko.utils.arrayFirst(self.dataOne(), function (data) {
debugger;
stringFromArray = data.display();
if (stringFromArray.indexOf(str) == 0) {
return data.display();
}
});
}
});
ko.applyBindings(viewModel);
「選択済み」オプションボタンを選択すると、テキストのみが返されます "<temp>
。したがって、2 つのレコードのみが返されます。
どうすればこれを達成できますか? ページをロードすると、すべてのレコードが表示され、「すべて」ボタンが選択済みとしてマークされます。「選択済み」を選択すると、レコードをフィルタリングする必要があります。
アップデート
ここに私のフィドルがあります