Typescriptを使用したノックアウトチェックボックス

Crumblenautjs

コンテキスト:チェックのリストを含むテーブルがあります。各チェックにはチェックボックスがあり、テーブル自体の上部に「すべて選択」チェックボックスがあります。チェックボックスの目的は、小切手を印刷することです。

現在、[すべて選択]チェックボックスが機能しています。これにより、chooseChecks ko.observable配列にすべてのチェックが追加され、CheckIDs配列にcheckIDが追加されます。サーバーの印刷機能は、checkIDのリストを使用します。

私が抱えている問題は、個々のチェック/チェックIDの追加と削除にあります。チェック/チェックIDがすでに配列にあるかどうかを判断する方法と、ある場合は削除する方法がわかりません。ビューなどを含むコードは次のとおりです。

免責事項:すべてのアレイをどのようにセットアップしたかについて、私はこれを考えすぎているかもしれません。

あなたのすべての協力に感謝します。

景色:

 <table class="details_table" data-bind="visible: vendorChecks().length">
    <thead>
        <tr>
            <th>Check ID
            </th>
            <th>Check Date
            </th>
            <th>Vendor Name
            </th>
            <th>Check Amount
            </th>
            <th>Approve Status
            </th>
            <th>
                <input type="checkbox" data-bind="checked: selectAllChecks" title="Select all/none"/>
            </th>

        </tr>
    </thead>
    <tbody class="nohighlight" data-bind="foreach: $root.vendorChecks">
        <tr>
            <td><span data-bind="text: $data.CheckID"></span></td>
            <td><span data-bind="text: CheckDate"></span></td>
            <td><span data-bind="text: VendorName"></span></td>
            <td><span data-bind="text: FormatCurrency(CheckAmount())"></span></td>
            <td><span data-bind="text: Globalize.formatCheckRunApproveStatus(ApprovalStatusID())"></span></td>
            <td>
                <input type="checkbox" class="print_line_checkbox" data-bind="checkedValue: $data, checked: $root.chosenChecks(), click: $root.addCheck"/>
            </td>
        </tr>
    </tbody>
</table>

Typescript:

 class SearchPrintedChecksModel {
    public checkRuns = ko.observableArray<CheckRunModel>(null);
    public bankDrafts = ko.observableArray<BankDraftInfoModel>(null);
    public vendorChecks = ko.observableArray<BankDraftInfo>(null);
    public isSelectedCheck = ko.observable(false);
    public chosenChecks = ko.observableArray<BankDraftInfo>(null);
    public checkIDs = ko.observableArray();

    public addCheck(checkIDs) {
        var checks = printModel.chosenChecks();
        const CheckIDs = checkIDs;
        for (var i in checks) {
            checkIDs.push(checks[i].CheckID);
            ???
        }
    }
    public selectAllChecks = ko.pureComputed({
        read: function () {
            return this.chosenChecks().length === this.vendorChecks().length;
         },
        write: function(value) {
            this.chosenChecks(value ? this.vendorChecks.slice(0) : []);
            const checks = printModel.chosenChecks();
            const checkIDs = printModel.checkIDs();
            for (let i in checks) {
                if (checks.hasOwnProperty(i)) {
                    printModel.checkIDs.push(checks[i].CheckID);
                }
            }
            this.addCheck(checkIDs);
        },
        owner: this
    });

}


$(document).ready(() => {
    ko.applyBindings(printModel);
});
user3297291

ロジックでエラーを見つけるのではなく、少し異なる構造を調べることをお勧めします。

  • checked各項目にオブザーバブルを入れてくださいこれをcheckedデータバインドで使用します。
  • 親ビューモデルcomputedでareadwriteメソッドを使用してを作成します
    • このread関数は、すべての項目がチェックされているかどうかをチェックします
    • write関数は、に書き込まれた値を渡し、各項目

コードは次のようになります。

function ViewModel() {
  
  this.items = [
    { id: 1, checked: ko.observable(false) },
    { id: 2, checked: ko.observable(false) },
    { id: 3, checked: ko.observable(false) },
    { id: 4, checked: ko.observable(false) },
  ];
  
   this.allChecked = ko.computed({
     read: function() {
       return this.items.every(function(item) {
         return item.checked();
       });
     },
     write: function(value) {
        this.items.forEach(function(item) {
          item.checked(value);
        });
     }
   }, this);
}
    
ko.applyBindings(new ViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>

<label>
  <input type="checkbox" data-bind="checked: allChecked">
  all
</label>
<ul data-bind="foreach: items">
  <li>
    <label>
      <input type="checkbox" data-bind="checked: checked"/>
      <span data-bind="text: 'Item ' + id"></span>
    </label>
  </li>
</ul>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

ノックアウトチェックボックス-チェックした値のみを配列にプッシュします

分類Dev

ノックアウトを使用してチェックボックスを更新し、選択した値を保存する

分類Dev

jQuery-ノックアウトを介して動的に追加されたモバイルチェックボックスはチェックできません

分類Dev

ノックアウトでチェックボックスの選択された要素を取得する方法

分類Dev

ノックアウトjsのチェックボックスをオフにします

分類Dev

$ watchを使用してチェックされたチェックボックスをカウントするAngularjsチェックボックス

分類Dev

ノックアウトチェックボックスは常にfalse

分類Dev

APISを使用したチェックインとチェックアウト

分類Dev

jQuery .on()trチェックボックスクリックで.not()を使用したtrクリックイベント?

分類Dev

Javascript選択チェックボックスは「名前」でカウントをチェックしました

分類Dev

チェックボックスを使用した非同期ダウンロード

分類Dev

チェックボックスは、ノックアウトのデータバインドでチェックされたままになりません

分類Dev

ノックアウト:チェックボックスがオンになっている場合にのみテキストパスを追加します

分類Dev

チェックボックスを使用してリストボックスアイテムを削除する

分類Dev

Xpath w / Seleniumを使用したチェックボックス

分類Dev

jQueryを使用したチェックボックス

分類Dev

ReactJSを使用したチェックボックスの検証

分類Dev

.javaを使用したチェックボックス設定

分類Dev

n-Changeを使用したAngularチェックボックス-「this」?

分類Dev

iTextsharpを使用したPDFチェックボックス

分類Dev

MongoDB を使用したチェックボックス データ

分類Dev

チェックボックスを使用したTreeViewの操作

分類Dev

チェックボックスとjsを使用したテキスト入力

分類Dev

cssだけを使用してレイアウトする2列のチェックボックス

分類Dev

チェックボックス値とテキストボックス値を使用したJQueryの合計

分類Dev

PowerShellを使用したAzureDevOpsgitチェックアウト

分類Dev

PaypalExpressチェックアウトを使用した送金

分類Dev

チェックボックスノックアウトクリックバインディングが正しく機能しない

分類Dev

SVNを使用したgithubからのチェックアウトブースト

Related 関連記事

  1. 1

    ノックアウトチェックボックス-チェックした値のみを配列にプッシュします

  2. 2

    ノックアウトを使用してチェックボックスを更新し、選択した値を保存する

  3. 3

    jQuery-ノックアウトを介して動的に追加されたモバイルチェックボックスはチェックできません

  4. 4

    ノックアウトでチェックボックスの選択された要素を取得する方法

  5. 5

    ノックアウトjsのチェックボックスをオフにします

  6. 6

    $ watchを使用してチェックされたチェックボックスをカウントするAngularjsチェックボックス

  7. 7

    ノックアウトチェックボックスは常にfalse

  8. 8

    APISを使用したチェックインとチェックアウト

  9. 9

    jQuery .on()trチェックボックスクリックで.not()を使用したtrクリックイベント?

  10. 10

    Javascript選択チェックボックスは「名前」でカウントをチェックしました

  11. 11

    チェックボックスを使用した非同期ダウンロード

  12. 12

    チェックボックスは、ノックアウトのデータバインドでチェックされたままになりません

  13. 13

    ノックアウト:チェックボックスがオンになっている場合にのみテキストパスを追加します

  14. 14

    チェックボックスを使用してリストボックスアイテムを削除する

  15. 15

    Xpath w / Seleniumを使用したチェックボックス

  16. 16

    jQueryを使用したチェックボックス

  17. 17

    ReactJSを使用したチェックボックスの検証

  18. 18

    .javaを使用したチェックボックス設定

  19. 19

    n-Changeを使用したAngularチェックボックス-「this」?

  20. 20

    iTextsharpを使用したPDFチェックボックス

  21. 21

    MongoDB を使用したチェックボックス データ

  22. 22

    チェックボックスを使用したTreeViewの操作

  23. 23

    チェックボックスとjsを使用したテキスト入力

  24. 24

    cssだけを使用してレイアウトする2列のチェックボックス

  25. 25

    チェックボックス値とテキストボックス値を使用したJQueryの合計

  26. 26

    PowerShellを使用したAzureDevOpsgitチェックアウト

  27. 27

    PaypalExpressチェックアウトを使用した送金

  28. 28

    チェックボックスノックアウトクリックバインディングが正しく機能しない

  29. 29

    SVNを使用したgithubからのチェックアウトブースト

ホットタグ

アーカイブ