网格值在 Knockout JS 中更改下拉列表时未更新
Grid value not updating on changing dropdown in Knockout JS
请在评论部分找到更新的小提琴。
我已经提供了HTML代码和ViewModel。在更改下拉列表中的值时,我希望更新网格中的点值。正在为新的下拉值计算点值,但返回无法将值绑定到网格。
为了在
UI 中dropdownAValue
更改时进行seats
更改,您需要先声明空的可观察数组:
self.seats = ko.observableArray();
并在订阅函数中更新它,而不是每次都创建新observableArray
:
self.seats([new PipCalculation(self.rates[0], self.rates[0].price, self.rates, self.newLot[0],currentlotvalue) ]);
查看更新的小提琴
好吧,
我的答案将是Max Brodin
给出的内容的补充.
我们可以通过执行类似操作来进一步规范化您的代码
查看型号:
self.dropdownAValue = ko.observable(0.1);
self.seats = ko.observableArray([]);
var newItems = ko.utils.arrayMap(self.rates,function(item){
return new PipCalculation(item, item.price, self.rates, self.newLot[0], self.dropdownAValue)
});
self.seats(newItems);
//computed code
self.formattedPrice2 = ko.computed(function() {
//alert("hi");
var cur = self.rate().pair;
//var price = self.rate().price;
//alert(self.myQuote());
var price = self.myQuote();
var pip = 1;
var lot1 =currentlotvalue().lotSize;
在这里工作小提琴
要做的事情 :
- 无需额外编写订阅订阅下拉更改。您需要做的就是在您的情况下进一步发送正确的
DD
值实例。
当您 - 在 DD 订阅中填充可观察数组时,性能会受到影响,即每次下拉列表更改。这可以通过像我上面提到的那样做来避免。
- 而是推入可观察数组推送到普通数组,然后使用该数组(性能提高) - max在他的评论中提到
还有另一种方法可以做到这一点(我以前做过这样)
self.seats([]);
var mutatedArray = self.seats();
ko.utils.arrayForEach(self.rates,function(item){
mutatedArray.push(new PipCalculation(item, item.price, self.rates, self.newLot[0],self.dropdownAValue)); // push to the array(normal array)
});
self.seats.valueHasMutated();
有关此的更多信息,请参阅我的答案 此处 .
相关文章:
- 如何在从下拉列表中选择不同的值后更新和调用javascript函数
- 下拉列表未从计算的可观察项更新
- 引导程序 3 下拉列表不会更新
- 使用AngularJS更新下拉列表
- 根据另一个字段选择获取新值后更新下拉列表内容
- 下拉列表选择的值在UI淘汰js中没有更新
- 如果选择/下拉列表发生更改,则Mysql会更新
- 通过下拉列表动态更新总数
- 从knockout.js中的下拉列表更新对象
- 基于第一多选下拉列表更新第二多选下拉列表
- 通过从下拉列表中选择来更新GoogleMaps InfoWindow
- 播放框架:从下拉列表中选择值时更新网页
- 将公司名称绑定到更新面板中的下拉列表,自动完成文本框工作,但每次页面刷新时
- 在 Javascript URL 中传递两个变量,以根据传递的值更新下拉列表
- 网格值在 Knockout JS 中更改下拉列表时未更新
- 基于多个下拉列表值更新文档
- 更新 HTML.隐藏对于具有选定值形式的值下拉列表的值
- 在jquery中用两个下拉列表更新URL
- 基于下拉列表更新ng中的值重复
- 在ASP.NET MVC中使用Jquery基于所选下拉列表更新表