将下拉列表中的值添加到 KnockoutJS 中另一个下拉列表中的任何值集
Adding a value from a drop down to any set of values from another drop down in KnockoutJS
(更新)我一直在练习 KOjs,我对一些复杂的事情感到好奇。
以这个例子为例(JSFiddle)
这是原著。 有一个文本输出,其中的值是从下拉列表中读取的。 下拉列表中的每个项目都有一个数字值,并且正在格式化(使用 numeralJS)到文本中。然后底部会显示一个字符,对应于下拉列表的选项文本值。
现在,这是我所做的:我添加了一个新的下拉列表,其中也有预定义的值:
var x = 300;
var y = 1234;
var z = 78;
选择标签就在原始选择标签旁边:
<select id="addThis" data-bind="options: addToThisSet, optionsText: 'numType', value: setNumValue"></select>
<select id="theList" data-bind="options: htmlSelectSet, optionsText: 'theText', value: displayTheValue"></select>
<p><span data-bind="text: charSymbol"></span></p>
我尝试以与原始标签相同的格式为新的select
标签添加内容数组(我对此有一种不好的感觉。 这是对的吗?
self.addToThisSet = [{
numType: "item 1",
NumValue: x
}, {
numType: "item 2",
NumValue: y
}, {
numType: "item 3",
NumValue: z
}];
self.setNumValue = ko.observable();
self.htmlSelectSet = [{
theText: "alpha",
theValue: num1
}, {
theText: "bravo",
theValue: num2
}];
self.displayTheValue = ko.observable();
我的目标很简单:无论在setNumValue()
(项目 1 或项目 2 或项目 3)上选择的任何值都将添加到displayValue()
上设置的任何值(alpha 或 bravo)中,并在 <h4 data-bind="text: sumOfValue"></h4>
上输出结果
我认为这就像制作另一个 ko.computed 一样简单,它添加所选变量并返回它们:
self.sumOfValue = ko.computed(function () {
sumCont = numeral(self.setNumValue() + self.displayTheValue()).format('0,0');
return sumCont;
});
但显然它没有用。这就是我试图添加和执行的操作(并且失败了)(JSFiddle)
为此,我需要一个欧比旺克诺比。 帮助!:(
=====================================(上一页)
我有这个开始:http://jsfiddle.net/yku33mtq/1/
在那小提琴上,我在Select
下拉列表中动态显示了一个数字值 - 然后在底部的Select
下拉列表中显示一个字符以指定您的选择。
我试图在号码旁边添加另一个select
下拉列表,它中断了:(
<h4 data-bind="text: sumOfValue"></h4><select id="addThis" data-bind="options: addToThisSet, optionsText: 'numType', value: setNumValue"></select>
<select id="theList" data-bind="options: htmlSelectSet, optionsText: 'theText', value: displayTheValue"></select>
<p><span data-bind="text: charSymbol"></span></p>
基本上,新的下拉列表也将具有数字值,并且根据您的选择,这些数字将从下一个select
下拉列表中添加到当前数字中。
见小提琴
看起来脚本在我在 HTML 上添加新select
后就开始失败,甚至没有将更改放在 JS 上 (http://jsfiddle.net/yku33mtq/5/) :/
KnockoutJS 中添加两个可以动态的下拉列表的正确方法是什么,规则是什么?
您只是忘记访问计算中的对象属性。在您的选择中,整个对象将插入到value
绑定可观察对象中。
因此,您需要访问 self.setNumValue().NumValue
.
我做了一个工作小提琴:http://jsfiddle.net/yku33mtq/9/
.HTML:
<h4 data-bind="text: sumOfValue"></h4>
<select id="addThis" data-bind="options: addToThisSet,
optionsText: 'numType',
value: setNumValue"></select>
<select id="theList" data-bind="options: htmlSelectSet,
optionsText: 'theText',
value: displayTheValue"></select>
<p><span data-bind="text: charSymbol"></span></p>
.JS:
function thisViewModel() {
var self = this;
self.addToThisSet = [{
numType: "item 1",
NumValue: 300
}, {
numType: "item 2",
NumValue: 1234
}, {
numType: "item 3",
NumValue: 78
}];
self.setNumValue = ko.observable();
self.htmlSelectSet = [{
theText: "alpha",
theValue: 35450
}, {
theText: "bravo",
theValue: 2450
}];
self.displayTheValue = ko.observable();
self.sumOfValue = ko.computed(function () {
var numValue = self.setNumValue();
var display = self.displayTheValue();
if (numValue && display) {
return numValue.NumValue + display.theValue;
}
});
self.charSymbol = ko.computed(function () {
if (self.displayTheValue()) {
if (self.displayTheValue().theText == "alpha") {
return "A";
}
if (self.displayTheValue().theText == "bravo") {
return "B";
}
}
return null;
});
}
ko.applyBindings(new thisViewModel());
- 如何使用jquery将所选项目从一个下拉组列表(optgroup)移动到另一个下拉列表(optgroup)
- 在另一个下拉列表中的选择上切换下拉列表中选项的可见性
- 引导程序在单击另一个下拉列表时关闭下拉列表
- 如何通过选择下拉列表中的选项从另一个 php 文件中获取数据
- 如何使用 asp.net 中的另一个下拉列表更改下拉列表选定的索引和可见性
- 如何填充下拉列表,从javascript中的另一个下拉列表中排除任何一个选项
- 选择“第一个下拉列表”以与另一个下拉列表的值相同
- 导航到另一个页面后,bootstrap下拉列表将不可用
- 使用jquery如何自动删除下拉列表中的第一个空白选项(如果它依赖于另一个选项)
- 如何根据另一个下拉列表的选择来填充多个下拉列表
- 如何从另一个下拉列表中隐藏选择基于下拉列表的值
- 根据另一个字段选择获取新值后更新下拉列表内容
- Dropdown基于jsp Struts中的另一个下拉列表
- 将选择下拉列表发送到另一个选择下拉列表
- 我该如何在Rails中使下拉列表重定向到另一个包含特定信息的页面
- 如何 从另一个下拉列表中选择一个值时禁用下拉值
- 我可以为 4 个不同的下拉列表创建一个循环吗?
- 根据选择的其他下拉列表填充一个下拉列表
- 我怎么能发送值和文本下拉到另一个页面使用POST/GET
- CasperJS:下拉列表;选择一个选项,代码可以在浏览器中工作,但不能在幻影中工作