0

我有一个直接绑定到某个单选按钮的计算 observableArray 和一个绑定到该单选按钮选择的事件。单选按钮选择为数组添加了一些值,并且选择触发了我使用数组值的事件。

我面临的问题是在事件函数执行后数组正在更新(通过计算逻辑),但我必须检查事件函数本身中的数组内容(主要是长度)。如果我现在使用该功能,我将获得旧值。有没有一种方法可以强制数组更新值(评估计算值),然后才能在事件函数中使用它?

<input type="radio" data-bind="attr: {name: name}, checked: val, event :{ change: $parent.Changed }" value="No" />

//    Knockout code
this.Items = ko.computed(function () {
    //Add selected items to ItemsArray
}
this.Changed = function () {
    if (self.Items().length > 2) {
        //Do sth
    }
}
4

1 回答 1

1

您可以订阅绑定到checked属性的 observable,而不是计算 observable 和 change 事件绑定。在 subscribed 函数中,您可以首先计算 Items 数组,然后进行长度检查:

this.val.subscribe(function (newVal) {
    // update Items array
    ...

    //
    if (self.Items().length > 2) {
        ...
    }
});
于 2013-06-19T06:02:35.453 回答