私は最初のノックアウト プロジェクトに参加しており、少しのガイダンスを使用できます。これまでのところ、サービスからビュー モデルにメイン クラスを設定できますが、選択リスト ボックスをバインドしようとしていますが、データは利用可能ですが、期待どおりにコントロールがバインドされません。選択リストのデータを取得してフォームに入力できるようになりましたが、適切なインデックスが選択されていません。
ご清聴ありがとうございました!
// Initialized the namespace
var Namespace = {};
// View model declaration
Namespace.initMemberVM = function (model) {
var memberViewModel = {
Id: ko.observable(model.Id),
Married: ko.observable(model.Married),
Name: ko.observable(model.Name),
SalutationId : ko.observable(model.SalutationId),
Salutation: ko.observable(Namespace.salutations[model.SalutationId]),
Salutations: Namespace.salutations
};
return memberViewModel;
};
Namespace.initSalutations = function (model) {
console.log('called initSalutations');
Namespace.salutations = ko.mapping.fromJS(model);
};
// Bind the member
Namespace.bindData = function (model) {
// Create the view model
var viewModel = Namespace.initMemberVM(model);
ko.applyBindings(viewModel);
};
$(document).ready(function () {
Namespace.getSalutations();
Namespace.getMember(1);
});
ajax 呼び出しから返されたデータは次のとおりです。
[{"Id":1,"Name":"Mr","IsMarried":false,"TimeStamp":"2012-11-27T21:49:10.583"},{"Id":2,"Name":"Mrs.","IsMarried":true,"TimeStamp":"2012-11-27T21:49:10.583"},{"Id":3,"Name":"Ms","IsMarried":false,"TimeStamp":"2012-11-27T21:49:10.583"},{"Id":4,"Name":"Miss","IsMarried":false,"TimeStamp":"2012-11-27T21:49:10.583"}]
ここにHTMLがあります
<table>
<tbody>
<tr><td>User Id</td><td colspan="4"><label data-bind="text: Name"></label></td></tr>
<tr>
<td>Salutation</td><td><select data-bind="options: Salutations, value: Id, optionsText: 'Name'"></select></td>
</tr>
<tr>
<td></td><td>First</td><td>Middle</td><td>Last</td>
</tr>
<tr>
<td>Name</td><td><input type="text" data-bind="value: FName"></td><td><input type="text" data-bind="value: MName"></td><td><input type="text" data-bind="value: LName"></td>
</tr>
</tbody>
更新: もう少し掘り下げた後、select が正しいインデックスを保持していない理由は b/c であることがわかりました.
それを管理する方法についてのガイダンスをいただければ幸いです。