什么是在Knockout中管理多个触发器的最佳方式。当阵列中的旅行者数量发生变化或所选组类型发生变化时,以下相关的observable将触发触发器。
var ajaxTrigger = ko.dependentObservable(function() {
this.selectedGroupType();
this.travellers();
alert("triggered");
}, viewModel);
但是我订阅了selectedGroupType,可以改变旅行者的数量:
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进行了更改,那么如果旅行者数量发生变化,我将获得第二次触发。
然而,在确定了游客类型和旅行人数后,我只想要一次触发通话。
这是最好的方式吗?
答案 0 :(得分:0)
我会看看节流。看一下Steve Sanderson博客上的第6项:
http://blog.stevensanderson.com/2011/08/31/knockout-1-3-0-beta-available/
// Will not notify changes faster than once per 500ms
var myObservable = ko.observable("initial value").extend({ throttle: 500 });
// Will not re-evaluate *or* notify changes faster than once per 500ms
var myDependentObservable = ko.dependentObservable(function() {
// Evaluation logic goes here, usually referencing other observables
return 123;
}).extend({ throttle: 500 });