私はview.modelにko.observableを持っています。これは入力に添付されています。ユーザーがその入力値(文字単位)を変更すると、AJAX呼び出しが実行され、バックエンドから提案がダウンロードされます。ユーザーが行っていない変更を無視する方法はありますか?
ユーザーが提案のいずれかを選択すると、入力値を入力値に入力したいが、AJAX呼び出しを送信しないでください。しかし、observableの値を設定すると、イベントと呼び出し関数が呼び出され、textInput
バインディングに接続されます。
textInputをトリガーせずに観測値の値を設定するにはどうすればよいですか?
サンプルコード:選択が行われ、フィールドはCSSクラスを持っているかどうかを確認するためにAJAX呼び出しの周りにいくつかのロジックを入れた後
var name = ko.observable();
name.subscribe(nameChanged);
var nameChanged = function() {
someService.post(name(), success, failure);
}
var someAction = function() {
name("Test"); // I don't want to trigger AJAX call here
}
<input type="text" data-bind="textInput: name" />
私は2つのオブザーバブル、nameとdisplayNameで終了しました。私は変更にも加入しています。変更されたときに別のものがあれば、最初のものは第2のものを更新します。しかし、今どこから変化が起こったのか知っています:displayNameがユーザーからの名前を更新し、名前がコードからdisplayNameを更新した場合。 あなたのソリューションはより優雅です。 – Spook