Обновлять выбранное связывание выбивки каждый раз, когда вносятся изменения в другое связывание выбивки

У меня есть следующий сценарий:

У меня есть таблица с несколькими выбранными полями ввода (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');
    }
};

0 ответов

Другие вопросы по тегам