0

説明:

チェックボックスと入力フィールドの 2 つがあります。これが私が欲しいものです。ビューモデルには、チェック ボックスのチェック/チェック解除 (ture または false) を保存するオブザーバブルと、入力フィールド値を保存するオブザーバブルがあります。これらの値は両方ともデータベースから取得されますが、簡単にするためにここでは静的にしています。そのため、ページがロードされ、チェックボックスの値が true の場合、入力フィールドが有効になり、値が表示されます。チェックボックスもチェックされた状態で表示されます。チェックボックスのチェックを外すと、入力フィールドの値はゼロになり、入力フィールドは無効になります。チェックボックスをオフにした後にチェックボックスをオンにした場合、入力フィールドの値はゼロのままである必要があります。

フィドル:

 data-bind="checked: boxChecked" type="checkbox" ></input>
     <br/>
  Result:
  <input data-bind="enable: boxChecked() == true,
                         value: boxCheked() = true ? result : result = 0" type="text"></input>

http://jsfiddle.net/KGSUD/1/

私はかなり長い間フィドルをいじっていましたが、それを理解できませんでした。

私はあなたの助けに感謝します。

4

1 に答える 1

3

ビュー (HTML) からロジックを取り出して、ViewModel に配置します。

HTML:

<input data-bind="checked: boxChecked" type="checkbox" ></input>
<br/>
Result:
<input data-bind="enable: boxChecked, value: result" type="text"></input>

JS:

var ViewModel = function() {
    var self = this;
    self.boxChecked = ko.observable(true);
    self.result = ko.observable('10');

    self.boxChecked.subscribe(function(newValue) {
        if (!newValue)
            self.result("0");
    });
};

サブスクリプションは を設定することになりresult、html バインディングがより単純になります。ここにフィドルがあります

于 2013-03-27T23:00:08.197 に答える