Cosa fa il modulo Magento_Ui / js / lib / knockout / extender / bound-node?


8

Il modulo bootstrap Knockout.js in Magento 2 include il seguente modulo tramite una definedipendenza.

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

Tecnicamente parlando, questo modulo crea wrapper per i metodi ko.applyBindingse ko.cleanNode. Questi wrapper nasconderanno determinati modelli e nodi di visualizzazione in un javascript privato WeakMap, quindi restituiranno un singolo oggetto del registro che ti consentirà di accedere agli elementi nel file WeakMap.

Tuttavia, non è chiaro quali funzioni per l'utente finale programmatore siano abilitate. Qualcuno qui sa a cosa Magento_Ui/js/lib/knockout/extender/bound-nodesserve effettivamente il modulo? O hai abbastanza familiarità con gli interni di Knockout.js per capire le cose?

Risposte:


2

Il Magento_Ui/js/lib/knockout/extender/bound-nodesregistro, in teoria, ti consentirà di recuperare un elenco di nodi HTML-DOM che vengono modificati scopedin un particolare modello di vista. cioè dovresti essere in grado di dire qualcosa del genere

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

e ottenere un riferimento al linodo con ambitocustomer

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

Noterai l'uso teorico e dovresti . Il problema, secondo questo thread del forum della comunità, è che c'è stato un bug sconosciuto nel Magento_Ui/js/lib/knockout/extender/bound-nodesmodulo in agguato da un po 'di tempo . Non è, a partire dal ramo 2.1.x, il codice su cui puoi fare affidamento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.