Aurelia 中的动态 radio/checkbox 解决方案
Dynamic radio/checkbox solution in Aurelia
我有一个要点来说明我的问题:
https://gist.run/?id=e2ccd5925e383f2fc36ad277c31bcf23
复选框版本工作正常,如果您取消勾选,它会正确更新模型,但如果您更改选定的单选按钮,它将在取消选择的单选按钮上保留真实值。如果我删除 model.bind="true"
值,它将写入 "on" 而不是 true。我确实想要 true/false,而不是 on/off。
我希望对象 属性 更新为 true 或 false,具体取决于它是否被选中,动态地。在我的场景中,我不知道需要选择多少个单选按钮或复选框。我只知道如果不是集合,我只想要一个,如果是集合,我想要一个未知数。
我认为您想要实现的目标(将单个值 on/off)用无线电无法实现,因为它的工作方式(select 集合中的单个值)与复选框(转动单个值 on/off)(MDN reference)。因此,如果您真的想要像收音机一样的外观,具有复选框行为,请考虑使用一些 CSS 和额外的 DOM 元素来使它看起来像这样,并且表现得像这样。
就像其他答案提到的一样 - <input type="checkbox">
行为不同于 <input type="radio">
。
我已经分叉了你的要点并进行了以下更改,使你的场景在 aurelia 中可以使用单选按钮:
1) 向您的 params
集合中的第一个对象添加了一个名为 selectedChanged
的函数(它不必存在,可以在视图模型 class 上,也许是一个更好的地方)。它负责处理单选按钮组中的选择变化,具体来说它会遍历options
(第二个参数)的集合,并将selected
属性设置为true
on id
的选项匹配函数的第一个参数,并且在所有其他选项上为 false。
2)input
上有一个事件叫做change
,我把它委托给上面提到的一个叫做selectedChanged
的函数,传递option.id
值和options
作为参数。
https://gist.run/?id=5f38414fde799dfc145fc1291d9f2fd3&sha=f12283b08bfb45e77b8280d46a3709b6ccb82768
我有一个要点来说明我的问题:
https://gist.run/?id=e2ccd5925e383f2fc36ad277c31bcf23
复选框版本工作正常,如果您取消勾选,它会正确更新模型,但如果您更改选定的单选按钮,它将在取消选择的单选按钮上保留真实值。如果我删除 model.bind="true"
值,它将写入 "on" 而不是 true。我确实想要 true/false,而不是 on/off。
我希望对象 属性 更新为 true 或 false,具体取决于它是否被选中,动态地。在我的场景中,我不知道需要选择多少个单选按钮或复选框。我只知道如果不是集合,我只想要一个,如果是集合,我想要一个未知数。
我认为您想要实现的目标(将单个值 on/off)用无线电无法实现,因为它的工作方式(select 集合中的单个值)与复选框(转动单个值 on/off)(MDN reference)。因此,如果您真的想要像收音机一样的外观,具有复选框行为,请考虑使用一些 CSS 和额外的 DOM 元素来使它看起来像这样,并且表现得像这样。
就像其他答案提到的一样 - <input type="checkbox">
行为不同于 <input type="radio">
。
我已经分叉了你的要点并进行了以下更改,使你的场景在 aurelia 中可以使用单选按钮:
1) 向您的 params
集合中的第一个对象添加了一个名为 selectedChanged
的函数(它不必存在,可以在视图模型 class 上,也许是一个更好的地方)。它负责处理单选按钮组中的选择变化,具体来说它会遍历options
(第二个参数)的集合,并将selected
属性设置为true
on id
的选项匹配函数的第一个参数,并且在所有其他选项上为 false。
2)input
上有一个事件叫做change
,我把它委托给上面提到的一个叫做selectedChanged
的函数,传递option.id
值和options
作为参数。
https://gist.run/?id=5f38414fde799dfc145fc1291d9f2fd3&sha=f12283b08bfb45e77b8280d46a3709b6ccb82768