Acesso select2 opções de HTML de nocaute ligação personalizada, a fim de desativá-los

votos
0

Estou tentando acessar os elementos de opções de uma lista suspensa select2 usando um Knockout ligação personalizada, a fim de desativar alguns deles (algumas das opções). A ligação personalizada é:

    ko.bindingHandlers.select2 = {
        after: [options, value],
        update: function (el, valueAccessor, allBindingsAccessor, viewModel) {
            var allBindings = allBindingsAccessor();
            var select2 = $(el).data(select2);
        }
    };

e a parte HTML é:

    <div style=width: 350px;>
        <select style=width: 100%; data-bind=value: attributiSelezionati, options: data, valueAllowUnset: true, optionsText: 'text', optionsValue: 'id', select2: { placeholder: 'Select an option...', allowClear: true, multiple: true}></select>
    </div>

em que a matriz de dados é:

this.data = ko.observableArray([]);
this.data.push(new Item(1, Item 1));
this.data.push(new Item(2, Item 2));
this.data.push(new Item(2, Item 22));
this.data.push(new Item(3, Item 3));
this.data.push(new Item(null, Item 4));

class Item {
id: KnockoutObservable<number> = ko.observable<number>();
text: KnockoutObservable<string> = ko.observable<string>();

constructor(Id: number, Text: string) {
    this.id(Id);
    this.text(Text);
} 
}

Eu posso ver os dados quando eu passar o mouse sobre o elemento el mas eu não sei como acessá-lo por meio de programação. Alguém sabe como obter esses itens?As

Publicado 19/12/2018 em 14:17
fonte usuário
Em outras línguas...                            


1 respostas

votos
0

Ele deve estar em valueAccessor()

valueAccessor: Isto representa uma função JavaScript que pode ser usado para acessar a propriedade atual ou expressão envolvido nesta ligação. Porque Knockout permite a utilização de qualquer uma propriedade vista modelo diretamente (como "-bind data = 'habilitado: isEnabled'"), ou uma expressão (como "data-bind = 'habilitado: firstName.length> 0'") , há uma função de utilitário que irá "desembrulhar" e dar-lhe o valor real utilizado na ligação. Aliás, esta função é chamado de "ko.unwrap."

var val = ko.unwrap(valueAccessor());
//val.options;
Respondeu 19/12/2018 em 14:54
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more