Apa yang Dilakukan Modul Magento_Ui / js / lib / knockout / extender / bound-node?

8

Modul bootstrap Knockout.js di Magento 2 mencakup modul berikut melalui definedependensi.

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

Secara teknis, modul ini menciptakan pembungkus untuk ko.applyBindingsdan ko.cleanNodemetode. Pembungkus ini akan menyembunyikan model tampilan dan node tertentu dalam javascript pribadi WeakMap, dan kemudian mengembalikan objek registri tunggal yang akan memungkinkan Anda mengakses item di WeakMap.

Namun, tidak jelas apa yang memungkinkan pengguna akhir-programmer menghadapi fitur ini. Apakah ada orang di sini yang tahu untuk apa Magento_Ui/js/lib/knockout/extender/bound-nodessebenarnya modul ini? Atau cukup akrab dengan Knockout.js internal untuk mencari tahu?

Alan Storm
sumber

Jawaban:

2

The Magento_Ui/js/lib/knockout/extender/bound-nodesregistry akan, secara teoritis, membiarkan Anda mengambil daftar node HTML-DOM yang scopeded ke tampilan model khusus. yaitu Anda harus bisa mengatakan sesuatu seperti ini

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

dan dapatkan kembali referensi ke lisimpul yang dicakup dengancustomer

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

Anda akan memperhatikan penggunaan secara teoritis dan seharusnya . Masalahnya, berdasarkan utas forum komunitas ini, adalah ada bug yang belum ditemukan di Magento_Ui/js/lib/knockout/extender/bound-nodesmodul yang mengintai untuk sementara waktu sekarang . Bukan, pada cabang 2.1.x, kode yang bisa Anda andalkan.

Alan Storm
sumber