我有一个html select
,它是通过KnockoutJS绑定的视图模型,并通过自定义绑定呈现为harvest chosen插件。
选择标记是:
<select class="chzn-select" data-bind="foreach: ControllersAndActions, selectedOptions: NewPermissionCAs, chosen: { PlaceholderText: 'Select', AddPlaceholder: true, ChosenOptions: {allow_single_deselect: true} }">
<optgroup data-bind="attr: {label: ControllerName}, foreach: Actions">
<option data-bind="text: $data"></option>
</optgroup>
</select>
我使用的自定义选择启用绑定是:
ko.bindingHandlers.chosen = {
init: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var options = ko.utils.unwrapObservable(valueAccessor()) || {};
var allBindings = allBindingsAccessor();
var attrList = { placeholderText: options.PlaceholderText };
$.extend(attrList, allBindings.chosen);
if (options.AddPlaceholder) {
$(element).attr('data-placeholder', attrList.placeholderText).addClass('chzn-select');
} else {
$(element).addClass('chzn-select');
}
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel) {
var options = ko.utils.unwrapObservable(valueAccessor()) || {};
$(element).chosen(options.ChosenOptions);
$(element).trigger("liszt:updated");
}
};
每当NewPermissionCAs
可观察到的变化(当我通过“选择的”gui选择某些东西时),会触发一个函数,该函数应该将新值保存到服务器。
问题是服务器需要两个 - 选项组标签数据,以及选择的选项值。
如何在我的功能代码中检索所选选项所在的组的选项组标签?
答案 0 :(得分:0)
已经弄明白了 - 需要在元素的value
属性中连接组名和选项值,如下所示:
<option data-bind="text: $data, attr: { value: $parent.ControllerName + ';' + $data }"></option>