Javascript 使用复选框选择和元素引用禁用的Aurelia数组绑定
我试图在不使用额外自定义函数的情况下完成以下任务:Javascript 使用复选框选择和元素引用禁用的Aurelia数组绑定,javascript,aurelia,Javascript,Aurelia,我试图在不使用额外自定义函数的情况下完成以下任务: 将选定项存储在新数组中 仅当选中相应的复选框时才启用文本框 跟踪新数组中的更新值 下面是我的代码的简化示例: <div repeat.for="item of itemSearch.rates"> <input type="checkbox" ref="item.$index" model.bind="item" checked.bind="selectedRates"> <input type="te
- 将选定项存储在新数组中
- 仅当选中相应的复选框时才启用文本框
- 跟踪新数组中的更新值
<div repeat.for="item of itemSearch.rates">
<input type="checkbox" ref="item.$index" model.bind="item" checked.bind="selectedRates">
<input type="text" disabled.bind="item.$index.checked == false" value.bind="item.total_value">
</div>
目前,在上述情况下,只有选中的.bind
起作用。所选项目存储在我的新selectedRates
数组中
但是,我的已禁用。绑定根本没有被触发。
如果我从复选框中删除checked.bind
,disabled.bind
工作正常
此外,更新后的值有时会在提交后拖到选定的日期,元素失去焦点。
我知道阵列观测并没有得到官方的支持,我注意到这一点值得一提
问题
export class App {
rates = [ { value: 1 }, {value: 2} ];
selectedRates = [];
updateSelectedRates(rate) {
if (rate.check.checked) {
this.selectedRates.push(rate);
} else {
let index = this.selectedRates.map(rate => rate.value).indexOf(rate.value);
if (index !== -1) {
this.selectedRates.splice(index, 1);
}
}
}
}
是否有办法选中。bind
与ref
和禁用一起工作。bind
?
你知道为什么我有时会看到这种阵列的行为吗
更新
我发现firebug在记录selectedRates
在html中显示它时,总是会更新值更改,@Fabio使用了BindingEngine
实现以及选中了my的.bind
。Chrome始终显示并记录正确的值。
仍然不知道为什么,或者我是否应该关心这个问题。这是我能找到的最简单的解决方案。也许有更简单的方法
html
<template>
<div repeat.for="item of rates">
<input type="checkbox" ref="item.check" model.bind="item" change.delegate="updateSelectedRates(item)">
<input type="text" disabled.bind="item.check.checked" value.bind="item.value">
</div>
<br>
<template repeat.for="rate of selectedRates">${rate.value}</template>
</template>
运行示例参见文档
谢谢您的反馈@Fabio。将selected
属性添加到我的对象中会起作用,但如果可能的话,我还是不希望使用自定义函数。这可能是为什么选中了。bind
与禁用的ref
&一起工作的错误。bind
?至于可观察的值,我发现只有在记录所选数据时,问题才真正出现在firebug中。在html中显示时,值更改始终会更新,您可以使用BindingEngine
实现,也可以选中my。bind
。Chrome始终显示并记录正确的值。它将数组的索引分配给该属性,并在禁用的情况下正常工作。bind=“item.$index.checked==false”
。请注意以下示例与事实之间的差异。。。你说得对。我认为你应该在政府部门公开一个问题repo@JvR我找到了一个更简单的解决办法。查看我的最新答案
<input type="checkbox" model.bind="product.id" checked.bind="selectedProductIds">