magento2 knockoutjs пользовательская привязка шаблона

12

Я пытаюсь понять knockoutjs в magento2. особенно в пользовательской привязке шаблона. Я не могу понять, как это сделать.

Может кто-нибудь иметь представление, как это работает? По крайней мере, где я могу найти определение getTemplate?

<!-- ko if: (!quoteIsVirtual) -->
            <!-- ko foreach: getRegion('customer-email') -->
                <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
        <!--/ko-->
Сивакумар К
источник
Вот подробное объяснение нокаутов в Magento 2 ibnab.com/en/blog/magento-2/…
FireBear

Ответы:

26

открыто

Magento / Checkout / просмотр / интерфейс / расположение / checkout_index_index.xml
файл. посмотрите на следующую строку

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

Так

Magento / Checkout / просмотр / интерфейс / веб / JS / просмотр / shipping.js
это ваш файл JS. Открой это. Посмотрите
шаблон: 'Magento_Checkout / shipping'
это файл шаблона для этого JS.

Возвращаться

Magento / Checkout / просмотр / интерфейс / расположение / checkout_index_index.xml
линия 122 (M2 2.0.0-rc)
<item name = "children" xsi: type = "array">
здесь вы можете увидеть некоторый дочерний узел. нравиться

<item name = "customer-email" xsi: type = "array">
----
---
</ Элемент>

Так

GetTemplate ()
отвечает за текущий рендеринг шаблона, что означает

Magento / Checkout / просмотр / интерфейс / веб / шаблон / форма / элемент / email.html

Откройте его, затем вы увидите следующий фрагмент кода


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

этот узел 'дополнительные-логин-поля-формы' является дочерним узлом 'клиент-электронная почта'.

Для вашего фрагмента кода, если цитата не является виртуальной, выберите ko

foreach: getRegion («электронная почта клиента»)
которое является именем дочернего узла и отображает его шаблон.

Сохель Рана
источник
getRegion ('customer-email') означает <item name = "customer-email" xsi: type = "array">. Это правильно? я имею в виду, что это будет повторять дочерние узлы этого.
Сивакумар К
его рендер только текущий шаблон. Я обновил ответ.
Сохель Рана
Спасибо за ваш response.so много раз в команде xml ..core, использующей <item name = "component" xsi: type = "string"> uiComponent </ item>. Так какой файл js рассматривает в этом случае?
Сивакумар К
да. посмотрите следующий файл Magento / Ui / view / base / requirejs-config.js. здесь uiComponent объявлен как js.
Sohel Rana
Как получить сайт 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.
Ракеш Джесадия