Magento_Ui / js / lib / knockout / extender / bound-nodes RequireJS模块做什么?


8

Magento 2中的Knockout.js引导程序模块通过define依赖项包含以下模块。

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

从技术上讲,此模块为ko.applyBindingsko.cleanNode方法创建包装器。这些包装器将某些视图模型和节点存放在私有javascript中WeakMap,然后返回一个注册表对象,使您可以访问WeakMap

但是,尚不清楚此功能使最终用户程序员面对哪些功能。这里有人知道Magento_Ui/js/lib/knockout/extender/bound-nodes模块的实际用途吗?还是对Knockout.js内部结构很熟悉以解决问题?

Answers:


2

Magento_Ui/js/lib/knockout/extender/bound-nodes理论上讲,该注册表将使您能够获取已scoped编入特定视图模型的HTML-DOM节点列表。即你应该能够说这样的话

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分支开始,它不是您可以依赖的代码。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.