我有以下情况:
我有一个包含多个选择输入框(chosen.jquery
)的表格。
<select multiple data-bind="
chosen: $parent.SelectableOptions,
optionsText: 'Title',
optionsValue: 'InternalName',
chosenSelectedOptions: SelectedFields,
chosenEnable: Enabled" class="chzn-select"></select>
<select multiple data-bind="
chosen: SelectedFields,
optionsText: 'Title',
optionsValue: 'InternalName',
chosenSelectedOptions: SelectedReadOnlyFields,
chosenEnable: Enabled" class="chzn-select"></select>
注意chosenSelectedOptions
第一个选择输入中的绑定。这是必然的SelectedFields
。这是一个数组,这是我希望作为第二个选择输入的可能选项的确切数组。这可以通过注意chosen
第二个选择输入的绑定来看出:SelectedFields
.
在第二个选择输入中选择的字段应添加到绑定中调用SelectedReadOnlyFields
和说明的新数组中。chosenSelectedOptions
问题
由于我对 KnockoutJS 还很陌生,所以我不确定从这里去哪里,或者如何正确设置它。每当SelectedFields
数组更改时,我希望更新第二个选择输入中的可能选项,但我无法让它工作。我读过一些帖子,其中提到了以下触发所选选择输入 ( $(element).trigger('chosen:updated')
) 更新的方法,但由于我在第二个选择输入上没有 id,因此我无法找到该元素。
额外的
主题绑定:
ko.bindingHandlers.chosen = {
init: function (element) {
ko.bindingHandlers.options.init(element);
$(element).chosen({ disable_search_threshold: 1000, allow_single_deselect: true, width: "100%" });
},
update: function (element, valueAccessor, allBindings, viewModel) {
ko.bindingHandlers.options.update(element, valueAccessor, allBindings);
$(element).trigger('chosen:updated');
}
};
ko.bindingHandlers.chosenSelectedOptions = {
init: function (element, valueAccessor) {
ko.bindingHandlers.selectedOptions.init(element, valueAccessor);
},
update: function (element, valueAccessor, allBindings, viewModel) {
ko.bindingHandlers.selectedOptions.update(element, valueAccessor, allBindings);
$(element).trigger('chosen:updated');
}
};