Обновлять выбранное связывание выбивки каждый раз, когда вносятся изменения в другое связывание выбивки
У меня есть следующий сценарий:
У меня есть таблица с несколькими выбранными полями ввода (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
изменения массива, я хочу обновить возможные параметры во втором входе select, но я не могу заставить это работать. Я прочитал посты, в которых упоминается следующий способ вызвать обновление выбранного входа ($(element).trigger('chosen:updated')
), но так как у меня нет идентификатора на втором входе select, я не могу найти этот элемент.
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');
}
};