我有以下情况:
我有一个包含多个选择输入框的表(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,我无法找到该元素。
EXTRA
主题中的绑定:
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');
}
};