1

次のように、プロパティにバインドされるチェックボックスを作成しています。

<input type="checkbox" data-bind="checked: hasSurname, enable: verified()"/>

そして、これはうまくいきます。私の問題は、ユーザーが確認されていないときにチェックボックスをオフにしたいので、次のことを行います:

  <input type="checkbox" data-bind="checked: hasSurname && verified(), enable: verified()"/>

このオプションは正しい動作をしますが、hasSurname プロパティは false のまま変更されません。

何か助けてください。

4

2 に答える 2

4

式が「書き込み」動作のオブザーバブルに評価される場合、値とチェック付きのバインディングは、ウィジェットがステータスを変更したときにのみオブザーバブルを更新します。

読み取りに複雑な式 ( hasSurname() && registered() )を使用し、単純な値 ( hasSurnameのみ) を変更する場合は、「書き込み」コールバックで計算されたオブザーバブルを作成する必要があります。http://knockoutjs を参照してください。 com/documentation/computedObservables.html - 特に、書き込み可能な計算オブザーバブルに関するセクション。

于 2013-02-14T17:17:22.723 に答える
1

データバインド内で&&を使用しようとすると、さまざまな結果が得られました。そのようなロジックが必要な場合は、計算されたオブザーバブルにカプセル化します。

this.validate1And2 = ko.computed(function () {
    var result;
    result = this.hasSurname() && this.verified();
    return result;
}, this);

例については、このjsFiddleを参照してください(これがあなたが探していた動作だと思います)。

http://jsfiddle.net/FwUzc/

更新:例を変更して、チェックボックスが2つだけになるようにしました。検証された値が変更されると、hasSurname値が更新されます。 http://jsfiddle.net/FwUzc/2/

于 2013-02-14T19:53:02.693 に答える