magento2 knockoutjs niestandardowe wiązanie szablonów

12

Próbuję zrozumieć knockoutjs w magento2. Szczególnie niestandardowe wiązanie szablonów. Nie jestem w stanie uzyskać przepływu pomysłów na renderowanie tego.

Czy ktoś może mieć pomysł, jak to działa? przynajmniej Gdzie mogę znaleźć definicję getTemplate?

<!-- ko if: (!quoteIsVirtual) -->
            <!-- ko foreach: getRegion('customer-email') -->
                <!-- ko template: getTemplate() --><!-- /ko -->
            <!--/ko-->
        <!--/ko-->
Sivakumar K
źródło
Oto szczegółowe wyjaśnienie dotyczące nokautów w Magento 2 ibnab.com/en/blog/magento-2/…
FireBear

Odpowiedzi:

26

otwarty

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
plik. spójrz na następujący wiersz

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

Więc

Magento / Checkout / view / frontend / web / js / view / shipping.js
to jest twój plik js. Otwórz to. Popatrz
szablon: „Magento_Sprawdź / wysyłka”
to jest plik szablonu dla tego JS.

Wróć do

Magento / Checkout / view / frontend / layout / checkout_index_index.xml
linia 122 (M2 2.0.0-rc)
<item name = "children" xsi: type = "array">
tutaj możesz zobaczyć węzeł potomny. lubić

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

Więc

getTemplate ()
odpowiada za bieżące renderowanie szablonu, co oznacza

Magento / Checkout / view / frontend / web / template / form / element / email.html

Otwórz go, a następnie zobaczysz następujący fragment kodu


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

ten węzeł „dodatkowe-formularz-pola-formularza” jest węzłem potomnym „e-maila klienta”.

W przypadku fragmentu kodu, jeśli cytat nie jest wirtualny, wybierz ko

foreach: getRegion („klient-e-mail”)
która jest nazwą węzła potomnego i wyświetla jego szablon.

Sohel Rana
źródło
getRegion („klient-e-mail”) oznacza <nazwa elementu = „klient-e-mail” xsi: type = „array”>. Czy to jest poprawne? mam na myśli, że iteruje to węzły potomne.
Sivakumar K,
renderuje tylko bieżący szablon. Zaktualizowałem odpowiedź.
Sohel Rana,
dzięki za odpowiedź. więc wiele razy w zespole xml ..core przy użyciu <item name = "component" xsi: type = "string"> uiComponent </item> .so który plik js rozważa w tym przypadku?
Sivakumar K
tak. poszukaj pliku Magento / Ui / view / base / Requjs-config.js. tutaj uiComponent jest zadeklarowany jako js.
Sohel Rana,
Jak uzyskać URl witryny, Checkoutpageurl w dowolnym szablonie nokaut?
Arun Karnawat
1

Możesz znaleźć określenie getTemplate od,

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

plik z linii nr 255 do 257.

  getTemplate: function () {
                return this.template;
            }
Rakesh Jesadiya
źródło
powyższy kod oparty na ogólnej dostępności Magento 2.0.0.
Rakesh Jesadiya