ドロップダウン コントロールを追加するときに発生した問題がある、 さまざまな種類のコントロール ( 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 は問題ありません。新しい Person を追加すると、問題が発生します。
性別フィールドに関連するすべてのものを削除すると、フォームは正常に機能します ( http://jsfiddle.net/gZC5k/995/を参照)。私はそれを置くことの問題だと思います
optionGender: ["Male", "Female"],
間違った場所にありますが、どこにあるべきかわかりません。