淘汰更新表结果与表外的字段

时间:2012-11-14 16:13:23

标签: knockout.js

我的桌子外面有一个文本框,淘汰赛正在创建。我想让用户更新该字段,然后更新表中的数据。我创建了以下小提琴,显示了我想要做的事情。

我用过

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();
};

和viewmodel

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

我无法安静地得到第一个使用它的答案。

1 个答案:

答案 0 :(得分:0)

使其成功的一种方法是让淘汰赛也为你的文本框进行绑定。

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(); 
    });

See demo fiddle.