¿Qué hace el módulo Magento_Ui / js / lib / knockout / extender / bound-node RequireJS?


8

El módulo de arranque Knockout.js en Magento 2 incluye el siguiente módulo a través de una definedependencia.

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

Técnicamente hablando, este módulo crea contenedores para los métodos ko.applyBindingsy ko.cleanNode. Estos contenedores esconderán ciertos modelos de vista y nodos en un javascript privado WeakMap, y luego devolverán un único objeto de registro que le permitirá acceder a elementos en el WeakMap.

Sin embargo, no está claro qué características de cara al programador de usuario final permite esto. ¿Alguien aquí sabe para qué Magento_Ui/js/lib/knockout/extender/bound-nodeses realmente el módulo? ¿O está lo suficientemente familiarizado con las partes internas de Knockout.js para resolver las cosas?

Respuestas:


2

El Magento_Ui/js/lib/knockout/extender/bound-nodesregistro, en teoría, le permitirá obtener una lista de nodos HTML-DOM que se scopededitan en un modelo de vista particular. es decir, deberías poder decir algo como esto

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

y volver a una referencia al linodo que tiene un alcancecustomer

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

Notarás el uso de teóricamente y deberías . El problema, según este hilo del foro de la comunidad, es que ha habido un error no descubierto en el Magento_Ui/js/lib/knockout/extender/bound-nodesmódulo que acecha desde hace un tiempo . No es, a partir de la rama 2.1.x, un código en el que pueda confiar.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.