javascript – 使用表单中的数字
作者:互联网
我正在用Aurelia构建一个应用程序,并且到目前为止真的很喜欢这个框架,但是我偶然发现了一个问题,我试图显示一个复选框列表,其值为数字(ID:s实际上),Aurelia似乎将它们转换为字符串,因此比较失败.
我基本上有类似的东西:
export class MyVm {
constructor () {
this.items = [
{name: 'Foo', id: 0},
{name: 'Bar', id: 1},
{name: 'Baz', id: 2}
];
this.selectedItems = [0, 2];
}
}
在我看来:
<ul>
<li repeat.for="item of items">
<input type="checkbox" value.bind="item.id" checked.bind="selectedItems">
${item.name}
</li>
</ul>
为了实现这一点,我实际上必须这样做.selectedItems = [“0”,“2”]这只会导致我自己的代码中的一堆其他比较问题.我也不希望以后在保存数据时将所选项目作为字符串发送到服务器.
我已经尝试使用一个简单的值转换器转换为toString toView和parseInt fromView,但我无法在selectedItems数组上运行此转换器:
export class IntValueConverter {
toView (val) {
return val.toString();
}
fromView (val) {
return parseInt(val);
}
}
你会怎么解决这个问题?
解决方法:
你几乎拥有它.这部分有一个小问题:
<input type="checkbox" value="${item.id}" checked.bind="selectedItems">
<输入> element的value属性强制将其分配给字符串的所有内容.不仅如此,字符串插值绑定(例如${…})也会将所有内容强制转换为字符串.您需要保留数字项ID.用model.bind =“item.id”替换value =“${item.id}”,它将起作用.无需转换器.
巧合的是,我在just pushed一套关于复选框,无线电和选择绑定到Aurelia绑定回购的详尽文档.他们尚未发布到官方Aurelia文档应用程序,但他们应该在周二.
此外 – 如果你看到ID为零的物品有什么奇怪的东西,那么周二也会有a fix.
最后,我知道这不是你的问题,但是对于那些在这里寻找表单中的绑定数字的人来说,这里有一些使用自定义元素和自定义属性的基本示例:
https://gist.run/?id=d9d8dd9df7be2dd2f59077bad3bfb399
标签:aurelia-binding,javascript,aurelia 来源: https://codeday.me/bug/20190829/1757291.html