O que o módulo RequireJS do Magento_Ui / js / lib / knockout / extender / bound-nodes faz?


8

O módulo de inicialização Knockout.js no Magento 2 inclui o seguinte módulo por meio de uma definedependência.

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

Tecnicamente falando, este módulo cria wrappers para os métodos ko.applyBindingse ko.cleanNode. Esses wrappers esconderão certos modelos e nós de exibição em um javascript privado WeakMape retornarão um único objeto de registro que permitirá acessar itens no WeakMap.

No entanto, não está claro quais recursos voltados para o usuário final programador isso permite. Alguém aqui sabe para que Magento_Ui/js/lib/knockout/extender/bound-nodesserve o módulo? Ou está familiarizado o suficiente com os internos do Knockout.js. para descobrir as coisas?

Respostas:


2

O Magento_Ui/js/lib/knockout/extender/bound-nodesregistro será, teoricamente, deixar você buscar uma lista de nós HTML DOM que são scopeded para um determinado modelo de vista. ou seja, você deve poder dizer algo assim

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

e volte uma referência ao linó com escopo definidocustomer

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

Você notará o uso de teoricamente e deveria . O problema, de acordo com este tópico do fórum da comunidade, é que houve um bug não descoberto no Magento_Ui/js/lib/knockout/extender/bound-nodesmódulo à espreita há um tempo . Não é, no ramo 2.1.x, o código em que você pode confiar.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.