5

ノックアウトでこれをやりたいです。

    <span class="badge" data-bind="text: rank, css: {'badge-success': firstPlace, 
        'badge-warning': !firstPlace}"></span>

私のjavascriptモデルクラスにこのメソッドがある場合

    self.firstPlace = ko.computed(function() {
        return self.rank() == 1;
    });

これは、「バッジ警告」クラスの生成に失敗します。firstPlace == falseやなどのデータバインド属性でいくつかの呼び出しバリエーションを試しました(!firstPlace)。代わりに、モデルに2番目の逆メソッドを追加する必要があります。

    <span class="badge" data-bind="text: rank, css: {'badge-success': firstPlace, 
        'badge-warning': notFirstPlace}"></span>


    // YUCK
    self.notFirstPlace = ko.computed(function() {
        return self.rank() != 1;
    });

もちろん、これは機能します。そして、KnockoutJSをお楽しみください。これは本当に使うのがとても楽しいです。しかし、これは間違っているようです。誰かがより良い方法を持っていますか?

4

2 に答える 2

21

data-bind属性で論理演算を使用している場合は()、監視可能な名前または計算された名前の後に置く必要があります。

<span class="badge" data-bind="text: rank, css: {'badge-success': firstPlace, 
    'badge-warning': !firstPlace()}"></span>
于 2012-09-28T12:46:15.733 に答える
6

一度firstPlace()だけ評価したい場合は、バインディングをインライン関数として記述できます。css

<span class="badge" data-bind="text: rank, css: (firstPlace() ? 'badge-success' : 'badge-warning')"></span>
于 2016-12-29T18:57:43.907 に答える