0

ノックアウトが作成しているテーブルの外にテキスト ボックスがあります。ユーザーにそのフィールドを更新させ、次にテーブル内のデータを更新させたいと考えています。私がやろうとしていることを示す次のフィドルを作成しました。

利用した

self.final = ko.computed(function() {
return (self.sales() + $("#increase").val() * self.multiplier();
});  

しかし、テーブルが更新されるようには見えません。

フィドルhttp://jsfiddle.net/Rarewood/SdL87/5/

この単純な答えを使用して、より複雑な問題に答えようとしています。json データソースを使用しています。

        self.getCalcData = function (mypath,index) {
            self.calcList.removeAll();
            $.getJSON(mypath, function (allData) {
                var mappedLogs = $.map(allData, function (item) { return new CalcList(item) });
                self.calcList(mappedLogs);
            });
        };

このデータ関数で

function CalcList(data) {
        var self = this;
        self.category = ko.observable(data.CATEGORY);
        self.sales = ko.observable(data.SALES);
        self.growthinput = ko.observable();
};

とビューモデル

function LogEntryViewModel() {
        var self = this; 
        self.calcList = ko.observableArray([]);
        self.sales = ko.observable();
        self.growthinput = ko.observable();
};

私は静かにその最初の答えを得ることができません。

4

1 に答える 1

0

それを機能させる1つの方法は、ノックアウトにテキストボックスのバインディングも行わせることです。

で新しい監視可能なプロパティを作成しますviewmodel

self.increase = ko.observable(200);

そしてそれをあなたのビューにバインドします:

<input id="increase" type="text" data-bind="value: increase"/>

次に、このプロパティをCategoryオブジェクトに渡します。

new Category(self.increase,  "shoes" , 200,  .1 )

increase次に、計算で使用できます。

self.final = ko.computed(function() {
      return self.sales() *  increase() * self.multiplier(); 
    });

デモフィドルを参照してください。

于 2012-11-14T16:38:58.733 に答える