3

我有以下情况:

我有一个包含多个选择输入框(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');
    }
};
4

0 回答 0