【发布时间】:2018-01-21 15:20:13
【问题描述】:
我无法让嵌套的 foreach 工作。我有以下代码:
HTML - 片段
<div data-bind='foreach: choice'>
<p data-bind='foreach: id'>
<input name="group1" type="radio" data-bind="attr: { id: $data }"/> <label data-bind="attr: { for: $data} "> <span data-bind=" text: $data"> </span>
</label>
</p>
</div>
Javascript - 代码段
var questionModel = {
question : ko.observable(),
id: ko.observableArray(),
choice: ko.observableArray()
}
function startTest() {
questionModel.question(questions[questionNo].question);
var m = [];
var i = [];
var e = 0;
while (e != 4) {
m.push(choices[questionNo][e].choice);
i.push(choices[questionNo][e].id);
e++;
}
questionModel.choice(m);
questionModel.id(i);
}
基本上我想要完成的是在单选按钮中生成每个选择,并使数组中的 ID 成为单选按钮和标签的 ID。我已经成功地展示了它自己的选择。但是当我添加 data-bind='foreach: id' 和 data-bind='attr: { id: $data }' 时,事情就停止了。我不断收到以下错误:
ReferenceError: Unable to process binding "foreach: function (){return id }" 消息:id 未定义
免责声明:我已经测试了数据,数组的一切都很好。
【问题讨论】:
-
我认为问题在于您正在创建两个并非真正嵌套的数组。
id是choice对象的属性。尝试删除段落标签<p data-bind='foreach: id'>,看看是否有效。 -
@styfle 单选按钮 id 与您上述解决方案的选择相同,这不是我想要的。 id 不是选择对象的属性。我要找的是这个。我有选择数组('Water'、'Air'、'Land、'Sea')和 id 数组('1'、'2'、'3'、'4')。单选按钮应该是“水”,ID 为“1”,下一个单选按钮应该是“空气”,ID 为“2”,依此类推。
-
您想要 4 个输入:
water:1, air:2, land:3, sea:4?或者您想要 16 个输入:water:1, air:1, land:1, sea:1, water:2, air:2, land:2, sea:2...? -
@styfle 第一个。
-
可以添加原始 JSON 数据吗?
标签: javascript html knockout.js