次のノックアウト ビューモデルがあります。
function DepartmentsViewModel() {
var self = this;
self.currentComplaint = ko.observable('');
self.departments = ko.observableArray([]);
self.selectedDepartment = ko.observable('').extend({
required: true
});
}
次に、部門にデータを入力selectedDepartment
し、一連のリモート呼び出しでコントローラーに値を割り当てます (id
ユーザーがいる現在のページに基づいて変数に割り当てる数値です)。
$(function() {
var self = new DepartmentsViewModel();
self.currentComplaint(id);
$.ajax({
url: '@Url.Action("GetDepartments")',
success: function (data) {
self.departments(data);
}
});
$.ajax({
url: '@Url.Action("GetDetails")',
data: { id: id },
success: function (data) {
self.selectedDepartment(data.DepartmentId);
}
});
ko.applyBindings(self);
});
これは、次のように HTML に取り込まれます。
<select class="complaint-select"
data-bind="options: departments,
optionsText: function(item) {
return item.DepartmentCode + ' - ' + item.DepartmentName
},
optionsValue: 'DepartmentId',
value: selectedDepartment,
optionsCaption: 'Choose..'">
</select>
ページを更新しても設定されないことselectedDepartment
があります。その結果、ドロップダウンに値が設定されておらず、ドロップダウンからオプションを選択するように指示されます。理由について何か考えはありますか?私はAJAXリクエストconsole.log(self.selectedDepartment());
のcomplete
アクションを実行しましたが、設定されている場合もあれば、未定義の場合もあります。