5 votes

Empêcher la liaison "with" de supprimer des éléments du DOM (Knockout.js)

Knockouters,

J'en suis venu à me fier à la liaison avec pour établir l'imbrication contextuelle. Bien que j'apprécie la façon dont KO manipule le DOM en fonction de l'état des éléments liés dans certains cas, il m'arrive de vouloir simplement obtenir les implications de la liaison sans supprimer le DOM.

Quelqu'un sait-il s'il est possible d'empêcher la manipulation du DOM au niveau de la liaison d'un élément individuel ?

Merci, Vinney

5voto

Michael Best Points 9033

La version 2.2+ de Knockout n'efface pas l'élément DOM lorsque with est lié initialement à un objet (ou une autre valeur véridique). Alternativement, vous pouvez utiliser l'option withlight que j'ai mis en place il y a quelque temps. Il ne peut se lier qu'à un objet (pas à un observable).

ko.bindingHandlers['withlight'] = {
    'init': function(element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        var bindingValue = valueAccessor();
        if (typeof bindingValue != 'object' || bindingValue === null)
            throw new Error('withlight must be used with an object');
        var innerContext = bindingContext['createChildContext'](bindingValue);
        ko.applyBindingsToDescendants(innerContext, element);
        return { 'controlsDescendantBindings': true };
    }
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X