KnockoutJs - 共享可观察数组以提供更多选择
KnockoutJs - shared observable array for more selects
>假设当雇主想要指定雇员和保费金额时,他点击"添加雇员"按钮,出现另一个表格,其中包含选择(雇员)并输入金额。
<select>
<option>John</option>
<option>George</option>...
</select>
<input type="text" placeholder="Amount"/>
我有一个共享的ko.observableArray,用于动态添加选择框和输入。它工作正常...
存在一个问题,雇主可以多次选择一名雇员(这是不可取的)。我试图制作新的数组ko.computed,过滤选择员工。但总是不成功。
应禁用"选择后"选项,或者不应出现在其他选择中。
有人已经解决了吗?
好的。我已经这样解决了:
首先,我必须更换我的
<selec data-bind="options: employyes">....
通过 foreach 并手动呈现我的项目
<select data-bind="value: selectedEmployee, foreach: $root.employees, click: $root.updateEmployees, optionsAfterRender: $root.updateEmployees">
<option value selected="selected" data-bind="visible: $index === 0">Choose...</option>
<option data-bind="value: id, text: name, attr: {'disabled': disabled}"></option>
</select>
然后我编写了函数,该函数总是更新员工的状态,我单击选择...它正在遍历所有员工并检查是否以某种形式选择了员工 ID,如果是,则禁用属性为 true 上的座位,否则为 false。
self.updateEmployees = function() {
ko.utils.arrayForEach(self.employees(), function (employee) {
var isEmployeeUsed = false;
ko.utils.arrayForEach(self.forms(), function (form) {
console.log(employee.id());
if (typeof employee !== 'undefined' && typeof form !== 'undefined' && employee.id() === form.selectedEmployee()) {
isEmployeeUsed = true;
}
});
employee.disabled(isEmployeeUsed);
});
JS 小提琴在这里
相关文章:
- 如何在javascript中使用click函数选择数组元素
- 如何根据下拉选择来选择数组的第一列
- 如何在加号运算符之后选择数组元素的一部分
- 如何选择数组中的第一个对象(当 array[0] 不起作用时)
- jQuery:如何获取选择数组中元素的索引
- 选择数组的随机元素来设置Youtube视频ID API
- 使用计数器更改选择数组名称
- AngularJs 帮助,在传递给隔离范围的对象中选择数组时遇到问题
- PHP 从“选择 - 数组”字段中填充文本框
- 在 jsrender 中选择数组的一部分
- JavaScript 如何使用 NOT 的索引与选择数组
- 如何随机选择数组
- 对象数组-选择数组子集,其中对象属性为值数组
- 未选择数组中的最后一项
- Jquery 选择数组中括号之间的文本
- (如何)除了math.random随机选择的一个元素外,我可以选择数组中的所有元素吗
- 从Javascript对象中选择数组
- 如何通过每次单击来选择数组的新索引
- 如何有效地随机选择数组项而不重复
- 如何只选择数组中的特定值