1
Knockoutで複数のトリガーを管理する最良の方法は何ですか?下記の従属変数は、配列内の旅行者の数が変更されたとき、または選択されたグループタイプが変更されたときにトリガを起動します。私は変更を加えた場合、私はすることが、その可能性をselectedGroupTypeするようKnockoutJS - 複数のトリガーを管理する
viewModel.selectedGroupType.subscribe(function(groupType) {
switch(groupType)
{
case "Individual":
// changes traveller quantity to 1
break;
case "Couple":
// changes traveller quantity to 2
break;
case "Family":
// changes traveller quantity to 3
break;
default:
break;
}
}, viewModel);
私はポジションにいる:私は旅行者の数を変更することができますselectedGroupType上のサブスクリプションを持っているしかし
var ajaxTrigger = ko.dependentObservable(function() {
this.selectedGroupType();
this.travellers();
alert("triggered");
}, viewModel);
トラベラーの数量が変更された場合、第2のトリガーを取得します
しかし、grouptypeと旅行者数の両方が決定された後に、ただ1回のトリガーコールが必要です。
これをラウンドするにはどうすればよいですか?
おかげマーク:スティーブサンダーソンさんのブログ上のアイテム6を見てみましょう。最新バージョンをダウンロードします。 – BrightonDev
私は1000msのスロットルを追加しようとしましたが、Ajaxリクエストは、ページがレンダリングされるとすぐに1回、次に1秒後に再び行われます。 Ajaxリクエストの呼び出しは従属オブザーバブルから行われ、他のオブザーバブルへの参照をすべて削除しても、AJAXリクエストはまだ実行されています。var ajaxTrigger = ko.dependentObservable(function(){ GetPrices(); } ).extend({throttle:1000}); – BrightonDev
これは、ko.dependentObservables(現在はko.computedと呼ばれています)を使って、この質問で起こった人を助けるのに本当に古くなっていることは分かっています。私が非常によく似た状況でやったのは、初期化された変数がviewModelの真下に設定され、ko.computedの呼び出しでバインドしたいオブザーバブルですが、呼び出す前に必ず初期化されているかどうかを確認します私は最初の評価中にajax呼び出しをトリガーしません。 – MHollis