0

説明
3 つのチェックボックスと 1 つの入力フィールドがあります。ユーザーがチェックボックスを選択すると、入力フィールドに値が表示されます。ただし、ユーザーがチェックボックスを選択しない場合は、入力フィールドに代替値を表示したいと考えています。

私がこれまでに持っているもの
http://jsfiddle.net/uFQdq/8/

function ViewModel() {
    var self = this;  
    self.primaryClass = ko.observable("50"); 
    self.secondaryClass = ko.observable("40"); 
    self.otherClass = ko.observable("10"); 

    self.alternativeValue("200");     

    self.selectedValues = ko.observableArray([]);

    self.sum = ko.computed(function () {
        var total = 0;
        ko.utils.arrayForEach(self.selectedValues(), function (item) {
            total += parseInt(item);
        });
        return total;
    });
}

ko.applyBindings(new ViewModel());

問題
現在の問題は、入力フィールドに何も表示されていないことです。私は何を間違っていますか?

4

2 に答える 2

1

それは、alternativeValue を観察可能にしていないためです。

self.alternativeValue = ko.observable("200");

更新されたフィドル

于 2013-03-22T18:18:51.317 に答える
0

それが本当に必要なものだと思います:あなたのフィドル、リビジョン 10

<input data-bind="checked: selectedValues" type="checkbox" value="50">50</input>
<input data-bind="checked: selectedValues" type="checkbox" value="40">40</input>
<input data-bind="checked: selectedValues" type="checkbox" value="10">10</input>

<br/>
Result:
<input data-bind="value: sum" type="text"></input>

/*You really don`t need an observables for values*/

var model = {
    selectedValues: ko.observableArray([])
}

model.sum = ko.computed(function () {
    var result = 0;

    model.selectedValues().forEach(function(value){
        result += parseInt(value, 10);
    });

    if (result === 0) {
        result = 200;
    }
    return result;
});

ko.applyBindings(model);
于 2013-03-23T08:48:21.340 に答える