我有以下淘汰视图模型:
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
操作,有时它是设置的,但其他的它是未定义的。