0

新しい人物レコードを追加し、そのレコードを編集することもできるフォームがあります。

そのため、新しいレコードの場合、フォームは、資格に対応するチェックされていないチェックボックスのリストを表示します。問題なくデータベースに保存されます。

個人データを編集したい場合、資格 ID の区切りリストとして資格を取得できます。したがって、フォームの適切なチェックボックスをオンにしたいと思います。

観察可能なチェックボックス配列を人のデータで更新するために必要なマッピング/更新機能があると思います。

基本的なjsFiddleをセットアップしましたが、重要な部分がありません。

誰かが私を正しい方向に向けることができるのだろうか?

前もって感謝します

4

1 に答える 1

0

次のカスタム バインディングは、もともと別のユーザー RPNiemeyer によって投稿されたものですが、現時点では回答を取得できません。とにかく、次のように見つけることができます:

カスタム バインディングは「checkedWithInit」と呼ばれ、ここでの HTML 要素の checked 属性は、わかりやすくするために便利に true に設定されています。

<input id="yourId" type="checkbox" value="yourValue" data-bind="checkedWithInit: yourInitialStateVariable" checked="true" />

カスタム バインディング コードは、要素の「init」イベント ハンドラの「オーバーライド」です。

ko.bindingHandlers.checkedWithInit = {
        init: function(element, valueAccessor, allBindingsAccessor, context) {
        var value = valueAccessor();
        if (element.checked) {
            //if it is an array then push this value to it
            if (value.push) {
                value.push(element.value);                 
            } else { //otherwise, just write the value
                if (ko.isWriteableObservable(value)) {
                    value(element.checked);   
                }
            }
        }
        //run the real checked binding's init function
        ko.bindingHandlers.checked.init(element, valueAccessor, allBindingsAccessor, context);
        },
        //always run the checked bindings update function
        update: ko.bindingHandlers.checked.update
    };

これが役に立てば幸いです。

バレリオ

于 2012-07-19T07:47:20.027 に答える