在我的模型中,我有一个带有可观察元素的对象数组。我订阅了这些元素之一(下拉列表),以便填写下一个下拉列表(级联下拉列表)。我现在需要在这些下拉列表中获取所选值的描述。我将如何从下拉列表中提取该值?如果可能,我试图避免对服务器运行查询。
过去我做过self.deptName($('#AssignedDepartment option:selected').text());
,但现在这个下拉列表并不是唯一的。我可以有很多选择。我uniqueName: true
在每个领域都使用。在订阅中,我如何确定更改了哪个下拉菜单?
这是我的订阅的样子:
// Build the hours types when the request type is selected
self.RequestType.subscribe(function (newValue) {
FindRequestType(newValue, function (record) {
// Do stuff
});
});
这是下拉列表的 HTML:
<select class="required span12" data-bind="leaveTypeDropDown: RequestType, uniqueName: true"></select>
这是绑定处理程序:
ko.bindingHandlers.leaveTypeDropDown = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
// If we don't have the leave request dropdown data, pull it.
if (jsonRequestType === "") {
$.ajax({
'async': false,
'url': '/api/payroll/LeaveRequestTypes/',
'dataType': 'text json',
'type': 'GET',
'success': function (json) {
jsonRequestType = json;
jsonRequestTypeRecieved = true;
}
});
}
// Fill the drop down list.
LoadRequestType(element);
// register event handler where bound observable will be changed
ko.utils.registerEventHandler(element, 'change', function () {
var observable = valueAccessor();
observable(element.value);
});
// Select the value from the previous record if there is one.
if (selectedRequestType !== null) {
element.value = selectedRequestType;
ko.utils.triggerEvent(element, 'change');
selectedRequestType = null;
}
}
};
更新1:由于存在混乱。如果我在下拉列表中选择带有“假期”文本的值“VAC”。如何将文本“假期”放入我的模型中?
更新 2:这是一个 jsFiddle,上面列出了我的(大部分)工作代码。http://jsfiddle.net/MikeWills/cykuqxto/6/出于某种原因,加载时我的下拉菜单不起作用,但再添加一天,您会看到我的下拉菜单。