每当对另一个敲除绑定进行更改时,更新selected-select敲除绑定

时间:2016-11-22 09:53:56

标签: jquery knockout.js knockout-binding-handlers

我有以下情况:

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

0 个答案:

没有答案