Magento_Ui / js / lib / knockout / extender / bound-nodes RequireJS Moduleは何をしますか?


8

Magento 2のKnockout.jsブートストラップモジュールには、define依存関係を介して次のモジュールが含まれています。

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

技術的には、このモジュールはko.applyBindingsおよびko.cleanNodeメソッドのラッパーを作成します。これらのラッパーは、特定のビューモデルとノードをプライベートJavaScript WeakMapに隠しておき、内のアイテムにアクセスできるようにする単一のレジストリオブジェクトを返しますWeakMap

ただし、エンドユーザープログラマーが直面している機能によってこれが可能になるかどうかは明らかではありません。ここの誰かがMagento_Ui/js/lib/knockout/extender/bound-nodesモジュールが実際に何のためにあるのか知っていますか?または、Knockout.jsの内部に十分慣れていて、物事を理解できますか?

回答:


2

Magento_Ui/js/lib/knockout/extender/bound-nodesレジストリは、理論的には、あなたがしているHTML-DOMノードのリストフェッチできるようになるscoped特定のビューモデルに編を。つまり、あなたはこのようなことを言うことができるはずです

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

liスコープが設定されているノードへの参照を取得しますcustomer

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

あなたはの使用に気付くでしょう理論的すべきです。問題は、このコミュニティフォーラムスレッドによると、Magento_Ui/js/lib/knockout/extender/bound-nodesモジュールにしばらく未発見のバグが潜んでいることです。2.1.xブランチの時点では、信頼できるコードではありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.