L'accès Select2 options HTML de knock-out de liaison personnalisée afin de les désactiver

voix
0

Je suis en train d'accéder aux éléments d'option dans une liste déroulante select2 à l'aide d'un knock-out de liaison personnalisée afin de désactiver certains d'entre eux (quelques-unes des options). La liaison personnalisée est la suivante:

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

et la partie HTML est:

    <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>

où la matrice de données est la suivante:

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);
} 
}

Je peux voir les données quand je passe la souris sur l'élément el mais je ne sais pas comment y accéder par programmation. Est-ce que quelqu'un sait comment obtenir ces articles?Les

Créé 19/12/2018 à 14:17
source utilisateur
Dans d'autres langues...                            


1 réponses

voix
0

Il devrait être en valueAccessor()

valueAccessor: Cela représente une fonction JavaScript qui peut être utilisé pour accéder à la propriété actuelle ou l'expression impliquée dans cette liaison. Parce que knock-out vous permet d'utiliser soit une propriété modèle de vue directement (par exemple « données bind = « activé: isEnabled » »), ou une expression (comme « données bind = « activé: firstName.length> 0 » ») , il y a une fonction d'utilité qui « déroulez » et vous donner la valeur réelle de la reliure. Soit dit en passant, cette fonction est appelée « ko.unwrap. »

var val = ko.unwrap(valueAccessor());
//val.options;
Créé 19/12/2018 à 14:54
source utilisateur

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