KnockoutJS - 管理多个触发器

时间:2011-09-16 13:28:57

标签: knockout.js

什么是在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进行了更改,那么如果旅行者数量发生变化,我将获得第二次触发。

然而,在确定了游客类型和旅行人数后,我只想要一次触发通话。

这是最好的方式吗?

1 个答案:

答案 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 });