1

これが私のjsfiddleです:http: //jsfiddle.net/bigtek/3rW9S/17/

私の質問はこれです:「txtSum」テキストボックスには、他の2つのテキストボックスの合計が含まれています。ただし、ユーザーはtxtSumボックスに別の番号を入力できます。この場合、「txtSum」ボックスを赤で強調表示して、数値が合計されないことをユーザーに通知します。

また、割り当てボタンは、それぞれの割り当てで2つのテキストボックスを計算します。これが発生した場合、同期されているかどうかに関係なく、txtSumボックスにある数値を使用して計算したいと思います。

<input type="text" data-bind="value:Sum" id="txtSum" />

(私はこれを正しく行っていますか?)

これが理にかなっていることを願っています..あなたの助けに感謝します。

4

1 に答える 1

1

確かに可能です。これは、ここのドキュメントの「例1:ユーザー入力の分解」という見出しの下に示されています。

function MyViewModel() {
    this.firstName = ko.observable('Planet');
    this.lastName = ko.observable('Earth');

    this.fullName = ko.computed({
        read: function () {
            return this.firstName() + " " + this.lastName();
        },
        write: function (value) {
            var lastSpacePos = value.lastIndexOf(" ");
            if (lastSpacePos > 0) { // Ignore values with no space character
                this.firstName(value.substring(0, lastSpacePos)); // Update "firstName"
                this.lastName(value.substring(lastSpacePos + 1)); // Update "lastName"
            }
        },
        owner: this
    });
}

ko.applyBindings(new MyViewModel());

この例では、書き込みコールバックは、着信テキストを「firstName」コンポーネントと「lastName」コンポーネントに分割し、それらの値を基になるオブザーバブルに書き戻すことによって、着信値を処理します。

HTML:

<p>First name: <span data-bind="text: firstName"></span></p>
<p>Last name: <span data-bind="text: lastName"></span></p>
<h2>Hello, <input data-bind="value: fullName"/>!</h2>

編集:

クイックブレークダウン

  • 読み取り:計算されたオブザーバブルに表示されるものを返すために実装するコード
  • write:基になるオブザーバブルに書き戻されるもの。
于 2012-11-20T23:04:15.513 に答える