切换CSS类KnockoutJS

时间:2012-10-29 09:49:42

标签: javascript binding knockout.js

我有月份链接

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

我想为所有链接禁用“选定月份”类,但“活动”除外,并在单击后启用激活。当然,我可以在我的方法changeFactMonth()中禁用类,但我可以使用knockout绑定吗?

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

1 个答案:

答案 0 :(得分:3)

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

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

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