我的桌子外面有一个文本框,淘汰赛正在创建。我想让用户更新该字段,然后更新表中的数据。我创建了以下小提琴,显示了我想要做的事情。
我用过
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();
};
我无法安静地得到第一个使用它的答案。
答案 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();
});