1

私はknockout.jsを使用しています。

これが私のシナリオです:

入力フィールドと3つのチェックボックスがあります。各チェックボックスには、関連付けられた値があります。たとえば、checkbox1(500)、checkbox2(200)、checkbox3(100)です。ユーザーがチェックボックスをクリックすると、そのチェックボックスの値が入力フィールドに表示されるようにします。ユーザーが2つのチェックボックスをクリックした場合、2つのチェックボックスの値の合計を入力フィールドに表示したいと思います。3つのチェックボックスすべてがチェックされている場合も同じことが当てはまります。

問題に対する私の見解

チェックされたチェックボックスに基づいて値を計算する計算関数が必要だと思いました。次に、計算された関数を入力フィールドにバインドできます。

私のビューモデルには、次の計算された関数があります。

var classes = ko.computed(function() { 
    var total = 0; 
    if(primaryClass.checked)
    total+= parseInt(primSalary()); 

    if(secondaryClass.checked)
    total+= parseInt(secSalary());    

    if(otherClass.checked)    
    total+= parseInt(otherSalary());

    return total;    
 });

私の見解では、私は自分の価値観を次のようにバインドします。

<input type="text" class="input-medium" placeholder="0" data-bind="text: classes"/>

ただし、これを行うと、コンソールは次のメッセージをスローします。

"バインディングを解析できません。↵メッセージ:ReferenceError:クラスが定義されていません;↵バインディング値:値:クラス"

皆様のご協力をよろしくお願いいたします。

4

2 に答える 2

2

classesViewModelに関数を割り当てる必要があります。

function ViewModel() {
    var self = this;

    self.classes = ko.computed(function () {
        // your function
    });
}
于 2013-03-22T12:57:24.820 に答える