1

我有月份链接

<ul data-bind="foreach: factMonthes">
    <li data-bind="click: $root.changeFactMonth, css:{'selected-month': num == $root.activeFactMonth()}">
</ul>

我想禁用所有链接的“选定月份”类,除了活动并在点击后启用活动。当然,我可以在我的方法 changeFactMonth() 中禁用类,但我可以用淘汰赛绑定来做到这一点吗?

function FactMonth(num){
    this.num = num;
    this.name = MonthesNames[num - 1];
    this.active = false;
}

function ViewModel() {

    self.factMonthes = ko.observableArray();       
    self.activeFactMonth = ko.observable(new Date().getMonth() + 1);

    for(var i = 1; i <= 12; i++)
    {
        var month = new FactMonth(i);
        month.active = self.activeFactMonth() == i;
        self.factMonthes.push(month);
    }
}
4

1 回答 1

3

如果month_num是一个可观察的,那么你需要解开它:

<li data-bind="
  click: $root.changeFactMonth, 
  css:{'selected-month': month_num() == $root.activeFactMonth()}
">

只有当您不将 observables 用作表达式的一部分时,您才能直接使用它们。由于比较 ( ==) 是一个表达式,因此您必须使用基础值,即您必须调用 observable。

于 2012-10-29T10:02:09.623 回答