Que fait le module RequireJS Magento_Ui / js / lib / knockout / extender / bound-nodes?

8

Le module d'amorçage Knockout.js dans Magento 2 inclut le module suivant via une definedépendance.

 Magento_Ui/js/lib/knockout/extender/bound-nodes

Techniquement parlant, ce module crée des wrappers pour les méthodes ko.applyBindingset ko.cleanNode. Ces wrappers stockent certains modèles de vue et nœuds dans un javascript privé WeakMap, puis renvoient un seul objet de registre qui vous permettra d'accéder aux éléments du WeakMap.

Cependant, les fonctionnalités face à l'utilisateur final programmeur que cela permet ne sont pas claires. Est-ce que quelqu'un ici sait à quoi Magento_Ui/js/lib/knockout/extender/bound-nodessert réellement le module? Ou est-il suffisamment familier avec les composants internes de Knockout.js pour comprendre les choses?

Alan Storm
la source

Réponses:

2

Le Magento_Ui/js/lib/knockout/extender/bound-nodesregistre vous permettra théoriquement de récupérer une liste de nœuds HTML-DOM édités scopeddans un modèle de vue particulier. c'est-à-dire que vous devriez pouvoir dire quelque chose comme ça

boundNodes = requirejs('Magento_Ui/js/lib/knockout/extender/bound-nodes');
reg = requirejs('uiRegistry');    
viewModel = reg.get('customer');
console.log( boundNodes.get(viewModel) );

et récupérer une référence au linœud qui est délimité aveccustomer

<li class="greet welcome" data-bind="scope: 'customer'">
    <!-- ko if: customer().fullname  -->
    <span data-bind="text: new String('Welcome, %1!').replace('%1', customer().firstname)">
    </span>
    <!-- /ko -->
    <!-- ko ifnot: customer().fullname  -->
    <span data-bind="html:'Default welcome msg!'"></span>
    <!-- /ko -->
</li>

Vous remarquerez l'utilisation de théoriquement et devriez . Le problème, d'après ce fil de discussion du forum de la communauté, est qu'il y a un bogue non découvert dans le Magento_Ui/js/lib/knockout/extender/bound-nodesmodule qui se cache depuis un moment maintenant . Ce n'est pas, à partir de la branche 2.1.x, du code sur lequel vous pouvez compter.

Alan Storm
la source