我正在使用不同类型的控件 ( http://jsfiddle.net/gZC5k/993/ ) 的嵌套表单,该表单在添加下拉控件时出现问题。
我的 HTML 中有这个
<tr class='person'>
<td>Gender</td>
<td>
<select data-bind="options: optionGender, value: gender"></select>
</td>
</tr>
这在模型中
self.contacts = ko.observableArray(ko.utils.arrayMap(contacts, function (contact) {
return {
firstName: ko.observable(contact.firstName),
lastName: ko.observable(contact.lastName),
isKey: ko.observable(contact.isKey),
gender: ko.observable(contact.gender),
phones: ko.observableArray(ko.utils.arrayMap(contact.phones, function (phone) {
return {
type: ko.observable(phone.type),
number: ko.observable(phone.number),
calls: ko.observableArray(phone.calls)
};
})),
addresses: ko.observableArray(contact.addresses),
optionGender: ["Male", "Female"]
};
}));
self.addContact = function () {
self.contacts.push({
firstName: "",
lastName: "",
isKey: "false",
gender: "Female",
phones: ko.observableArray(),
addresses: ko.observableArray()
});
};
当我最初加载数据时,我可以编辑所有值并且相应的 JSON 是好的当添加一个新的人时,事情出错了。
当所有与 Gender 字段相关的东西都被删除时,表单就可以正常工作(参见http://jsfiddle.net/gZC5k/995/)。我认为我是把
optionGender: ["Male", "Female"],
在错误的地方,但无法弄清楚它应该在哪里。