ラジオボタンに基づいてアクティビティをフィルタリングする必要があるユーザテーブルが変更されました。ラジオボタンの選択に基づいてテーブルをフィルタリングします。
私はノックアウトでやったが動作しない、エラーは出ないが、テーブルが空になる、何か間違っている?フィルタリングなし
(foreachのがusers
ないfilteredUsers
上にあるとき)、ページが完全に動作し
ラジオボタン:
<div class="btn">
<input id="active" checked class="filterOpt selectedRadio" name="filterOpt" type="radio" data-bind="checked: inactive, attr: { 'value': 'false' }" /> <label class="filterLbl selectedRadio" for="active">ACTIVE</label>
</div>
<div class="btn">
<input id="inActive" class="filterOpt" name="filterOpt" type="radio" data-bind="checked: inactive, attr: { 'value': 'true' }" /> <label class="filterLbl" for="inactive">INACTIVE</label>
</div>
<div class="btn">
<input id="all" class="filterOpt" name="filterOpt" type="radio" data-bind="checked: inactive, attr: { 'value': 'all' }" /> <label class="filterLbl" for="all">ALL</label>
</div>
そしてKOコード:
self.users= ko.observableArray([]);
self.inactive = ko.observable();
self.filteredClients = ko.observableArray([]);
self.filteredUsers= ko.computed(function() {
var val = self.inactive();
return self.users().filter(function (item) {
console.log(ko.toJSON(item));
return item.inactive === val;
});
});
私のテーブル:
<!--ko foreach: filteredUsers-->
<table class="table">
<tr class="header">
<td class="name n" data-bind="text: name"></td>
<td class="rep" data-bind="text: email"></td>
<td class="status" data-bind="text: inactive"></td>
</tr>
</table>
あなたのラジオボタンは、文字列として選択された値を返します。 Userオブジェクトがbooleanとして 'inactive'を持っている場合、booleanを文字列と比較するので、' === 'は常にfalseを返します。これはCodepenの例です:https://codepen.io/anon/pen/bRoQqB。あなたは 'User 2'がブール値として' true'を持っているのを見ることができ、ショーではありません( 'User 1'はショーです)。お役に立てれば。 –
@JoseLuisありがとう、私は実際には '非アクティブ'観測可能性をjsonに解析して解決しました。私はそれを受け入れることができるように答えとして書くか? – user3378165