我正在尝试使用 Knockout.js 创建一个复选框列表。列表本身来自数据绑定源,以及列表中的哪些项目被选中。我的模型看起来像这样:
var ViewModel = function ()
{
this.areas = [{AreaId: 1, Name: 'Test 1'}, {AreaId: 2, Name: 'Test 2'}, {AreaId: 3, Name: 'Test 3'}];
this.AreasImpacted = ko.observableArray([1, 2]);
};
现在,我想创建一个带有标签Test 1、Test 2和Test 3的复选框列表。我想检查测试 1和测试 2。我的 HTML 看起来像这样:
<span class="areas" data-bind="foreach: areas">
<label><input type="checkbox" data-bind="value: AreaId, checked: $parent.AreasImpacted" /><span data-bind="text: Name"></span></label>
</span>
这确实使用正确的名称绘制每个复选框,并且我可以验证value
每个复选框的属性是否设置正确,但是没有任何检查!我也试过设置this.AreasImpacted
为2
. 当我这样做时,所有 3 个复选框都被选中!
完全糊涂了!
更新:
如果我将模型更改为:
this.AreasImpacted = ko.observableArray(['1', '2']);
然后事情按预期工作。
如果我不得不猜测,我会说for-each
绑定正在将每个值转换为字符串。我很好奇这是设计使然,还是 Knockout.js 错误。我希望输入的值是数字,因为这就是我将它绑定到的值。
提交的错误: