magento2基因敲除js自定义模板绑定


12

我正在尝试了解magento2中的基因敲除js,尤其是自定义模板绑定。我无法获得渲染此内容的想法流程。

有人能知道它是如何工作的吗?至少在哪里可以找到getTemplate的定义?

<!-- ko if: (!quoteIsVirtual) -->
            <!-- ko foreach: getRegion('customer-email') -->
                <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
        <!--/ko-->

以下是有关knockoutjs在Magento 2详细解释ibnab.com/en/blog/magento-2/...
FireBear

Answers:


26

打开

Magento /结帐/查看/前端/布局/checkout_index_index.xml
文件。看下面一行

<item name =“ component” xsi:type =“ string”> Magento_Checkout / js / view / shipping </ item>

所以

Magento /结帐/查看/前端/web/js/view/shipping.js
这是您的js文件。打开它。看
模板:“ Magento_Checkout /发货”
这是此JS的模板文件。

回到

Magento /结帐/查看/前端/布局/checkout_index_index.xml
第122行(M2 2.0.0-rc)
<item name =“ children” xsi:type =“ array”>
在这里您可以看到一些子节点。喜欢

<item name =“ customer-email” xsi:type =“ array”>
----
---
</ item>

所以

getTemplate()
负责当前的模板渲染,这意味着

Magento /结帐/视图/前端/web/template/form/element/email.html

打开它,然后您可以看到以下代码片段


<!-- ko foreach: getRegion('additional-login-form-fields') -->
            <!-- ko template: getTemplate() --><!-- /ko -->
            <!-- /ko -->

该“ additional-login-form-fields”节点是“ customer-email”的子节点。

对于您的代码段,如果引用不是虚拟的,则选择ko

foreach:getRegion('客户电子邮件')
这是子节点名称并呈现其模板。


getRegion('customer-email')表示<item name =“ customer-email” xsi:type =“ array”>。这是对的吗?我的意思是它将迭代该子节点。
Sivakumar K

其仅渲染当前模板。我更新了答案。
Sohel Rana 2015年

感谢您的回复。在xml ..core团队中使用<item name =“ component” xsi:type =“ string”> uiComponent </ item>的很多次。在这种情况下,考虑使用哪个js文件?
Sivakumar K 2015年

是。看下面的文件Magento / Ui / view / base / requirejs-config.js。这里uiComponent被声明为js。
Sohel Rana 2015年

如何在任何淘汰模板中获取Site URl,Checkoutpageurl?
阿伦·卡纳瓦特

1

您可以从以下位置找到getTemplate的定义,

`root\vendor\magento\module-ui\view\base\web\js\lib\core\element\element.js` 

行号文件 255至257。

  getTemplate: function () {
                return this.template;
            }

以上代码基于magento 2.0.0的一般可用性。
Rakesh Jesadiya 2015年
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.