1

月のリンクがあります

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

アクティブを除くすべてのリンクのクラス「selected-month」を無効にし、クリック後にアクティブにできるようにします。もちろん、メソッド 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()}
">

オブザーバブルは、式の一部として使用しない場合にのみ直接使用できます。比較(==)は式であるため、基になる値を使用する必要があります。つまり、observableを呼び出す必要があります。

于 2012-10-29T10:02:09.623 に答える