【发布时间】:2015-06-20 18:31:33
【问题描述】:
我正在寻找一种在 aurelia 中单向绑定复选框的方法,同时仍允许该复选框接受用户的点击。
假设一个类似于以下的视图,它显示一个可选项目列表:
<template>
<div click.trigger="selected()">
<label......>${vm.code}</label>
<label....>${vm.description}</label>
<img...../>
<input type="checkbox" checked.one-way="vm.selected"></input>
</div>
</template>
用户应该能够单击视图中的任意位置来选择项目,因此click.trigger="selected()" 已附加到容器。在selected() 内,复选框绑定的vm.selected 属性被更新。
复选框也应该是可点击的,但应该允许选择由selected() 方法控制。
readonly 不能用于checkbox 的输入控件,因为它用于控制input.value,在这种情况下,感兴趣的是checked 属性。
在事件 args 上调用 preventDefault 会禁用默认的复选框检查行为,这可以在 Aurelia 中通过单击委托返回 false 来实现。这将需要将另一个处理程序附加到输入控件,并且存在点击由输入控件处理并且不会冒泡到附加到容器 (selected()) 的委托以实际控制选择的问题。
也许我缺少另一种方法,我正在考虑使用两个字体很棒的图标,看起来像选中和未选中的复选框,并根据 vm.selected 的值在两者之间切换。
【问题讨论】:
标签: javascript html data-binding aurelia